使用System.Net.Mail中的SMTP发送邮件(带附件) - 大肖

时间:2024-03-03 08:49:44

使用System.Net.Mail中的SMTP发送邮件(带附件)

System.Net.Mail

使用简单邮件传输协议SMTP异步发送邮件

想要实现SMTP发送邮件,你需要了解这些类

SmtpClient :使用配置文件设置来初始化 SmtpClient类的新实例。

它包含以下属性:

Host:设置用于SMTP服务的主机名或主机IP;

Port:设置用于SMTP服务的端口(一般设置为25);

Credentials:身份验证;

Send:直接发送邮件;

SendAsync:异步发送邮件(不阻止调用线程)。

 

MailMessage:表示一封电子邮件。

它包含以下属性:

Attachment:表示文件附件;

CC:抄送;

Subject:主题;

From:发件人

Priority:优先级;

Body:正文;

BodyEncoding:Content-type。

 

此外  SmtpClient类不具有Finalize方法,因此应用程序必须调用Dispose以显式释放资源。

 1 static bool mailsend = true;
 2  public async Task Send(object sender, EventArgs e)
 3         {
 4           
 5             SmtpClient smtp = new SmtpClient();//实例化一个SMPTClient对象
 6             smtp.EnableSsl = false;//不启用SSL加密
 7             smtp.Host = "00.000.00.000";//此处填写服务器IP
 8             smtp.Port = 25;//端口固定为25
 9             //smtp.Credentials = new NetworkCredential("user@.com","password");//验证用户  
10             MailMessage msg = new MailMessage();//实例化一个Message对象
11             msg.Priority = MailPriority.High;//邮件优先级
12             msg.To.Add("user@foxmail.com");//收件人
13            // msg.CC.Add("user@163.com");//抄送
14             msg.Bcc.Add("user@qq.com");//密送
15             string fileName = "";
16             var na = Request.Files.AllKeys;//前端HTTP请求过来的文件
17             foreach (var item in na)
18             {
19                 HttpPostedFileBase file = Request.Files[item] as HttpPostedFileBase;
20                 fileName = Path.GetFullPath(file.FileName);
21             }
22             Attachment attach = new Attachment(fileName);//将文件路径付给Attachment的实例化对象
23             ContentDisposition dispo = attach.ContentDisposition;//获取信息并读写附件
24             dispo.CreationDate = System.IO.File.GetCreationTime(fileName);
25             dispo.ModificationDate = System.IO.File.GetLastWriteTime(fileName);
26             dispo.ReadDate = System.IO.File.GetLastAccessTime(fileName);
27             msg.Attachments.Add(attach);//将附件加入邮件中
28             msg.From = new MailAddress("SpadesQ@sea.com", "是你呀");//发件人 别名
29             msg.Subject = "我学习了,你呢?";
30             msg.SubjectEncoding = System.Text.Encoding.UTF8;
31             msg.Body = "等下一个她";
32             msg.BodyEncoding = System.Text.Encoding.UTF8;
33             smtp.SendCompleted += new SendCompletedEventHandler(client_SendCompleted);
34             string userState = "Task one";
35             smtp.SendAsync(msg, userState);//使用异步发送 ,否则线程阻塞
36             if (mailsend==false) //可在回调时修改mailsend值进行取消
37             {
38                 smtp.SendAsyncCancel();
39             }
40             Response.Write("已发出");
41         }
42         
43          void client_SendCompleted(object sender, AsyncCompletedEventArgs e)
44         {
45             string token =(string)e.UserState;
46             if (e.Cancelled)
47             {
48                 Response.Write(string.Format("{0} Send canceled.",token));
49             }
50             if (e.Error !=null)
51             {
52                 Response.Write(string.Format("[{0}] {1}", token, e.Error.ToString()));
53             }
54             else
55             {
56                 Response.Write("Message Send.");
57             }
58             mailsend = true;
59         }
View Code

 

 

 

感谢您的观看,您的