注意:附件添加的文件不要添加太大,不然会弄挂掉程序,因为发送大文件是一个很耗时的过程,需要额外的线程进行处理,这里为了简单起见就不做过多的处理
转自:https://bbs.csdn.net/topics/392481821
在winform中添加一个按钮,Name属性为btnSend,Text属性为 发送
双击发送按钮,打开发送按钮的事件函数并编辑代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 发送邮件winform
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void btnSend_Click(object sender, EventArgs e)
{
try
{
string title = "提交的内容";
string contact = "附件";
string content = "附件是我要提交的内容";
string upfile = "";
//实例化一个发送邮件类。
MailMessage mailMessage = new MailMessage();
//发件人邮箱地址,方法重载不同,可以根据需求自行选择。
mailMessage.From = new MailAddress("1323266208@qq.com");
//收件人邮箱地址。
mailMessage.To.Add(new MailAddress("2847225301@qq.com"));
//邮件标题。
mailMessage.Subject = title;
//邮件内容。
string MailBody = "<p style=\"font-size: 10pt\">联系:" + contact + "</p>";
MailBody += "<p style=\"font-size: 10pt\">内容:" + content + "</p>";
//内容编码
mailMessage.BodyEncoding = Encoding.Default;
//发送优先级
mailMessage.Priority = MailPriority.High;
//邮件内容
mailMessage.Body = MailBody;
MessageBox.Show("请选择附件");
//添加附件,打开添加附件的对话框
OpenFileDialog dialog = new OpenFileDialog();
if (dialog.ShowDialog() == DialogResult.OK)
{
upfile = dialog.FileName;
}
else {
return;
}
mailMessage.Attachments.Add(new Attachment(upfile));
MessageBox.Show("附件添加完成,等待发送中...");
//是否HTML形式发送
mailMessage.IsBodyHtml = true; //============这里很重要,以前我也是这里漏了,发出去的是html代码
//实例化一个SmtpClient类。
SmtpClient client = new SmtpClient();
//发件服务器
client.Host = "smtp.qq.com";
//使用安全加密连接。
client.EnableSsl = true;
//不和请求一块发送。
client.UseDefaultCredentials = false;
//验证发件人身份(发件人的邮箱,发送邮箱里的生成授权码);
client.Credentials = new NetworkCredential("1323266208@qq.com", "邮箱里的生成授权码,需要到发送的qq邮箱里面设置,获取授权码");
//发送
client.Send(mailMessage);
MessageBox.Show("发送成功");
}
catch (Exception)
{
MessageBox.Show("发送失败");
}
}
}
}
不过经过测试发现,邮件没添加附件之前,每一封邮件都会当成垃圾邮件来处理,不过添加附件后,再修改一下发送的内容后就不会被当成垃圾邮件处理了