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 }
感谢您的观看,您的?是对我最大的支持!