-
C# 通过QQ邮箱和阿里云邮箱自动发送邮件(对System.Web.Mail与System.Net.Mail的测试)
1. 实现功能:
通过程序自动发送邮件。使用QQ邮箱(个人/企业)或阿里云邮箱(企业)。
2. 编码过程中的尝试结果:
2.1 测试配置:见3.1 app.config配置
2.2 测试结果
3. 代码实现
3.1 app.config配置
3.1.1 QQ邮箱配置
1 <connectionStrings> 2 <add name="MailServerIP" connectionString="smtp.exmail.qq.com" /> 3 <add name="MailServerPort" connectionString="465" /> 4 <add name="fromMailAddress" connectionString="xxx@yyy.com" /> 5 <add name="toMailAddress" connectionString="xxx2@yyy.com"/> 6 <add name="mailUsername" connectionString="usernamexxx" /> 7 <add name="mailPassword" connectionString="passwordxxx" /> 8 <add name="ccMailAddress" connectionString="usercc@yyy.com" /> 9 </connectionStrings> 注:若是QQ个人邮箱,则mailPassword需配置成授权码
3.1.2 阿里云邮箱配置
1 <connectionStrings> 2 <add name="MailServerIP" connectionString="smtp.qiye.aliyun.com" /> 3 <add name="MailServerPort" connectionString="25" /> 4 <add name="fromMailAddress" connectionString="xxx@yyy.com" /> 5 <add name="toMailAddress" connectionString="xxx1@yyy.com"/> 6 <add name="mailUsername" connectionString="usernamexxx" /> 7 <add name="mailPassword" connectionString="passwordxxx" /> 8 <add name="ccMailAddress" connectionString="usercc@yyy.com" /> 9 </connectionStrings>
3.2 调用
1 public void EventOccured(string EventID) 2 { 3 string subjectInfo = "一些要发送邮件的事件发生咯"; 4 string bodyInfo = "<p style =\"font-size: 10pt\">Hi,all</p>"; 5 bodyInfo += "<p style =\"font-size: 10pt;color:red\">事件:" + EventID + "已经发生,请注意监控。</p>"; 6 bodyInfo += "<p style =\"font-size: 10pt\">以上内容为系统自动发送,请勿直接回复,谢谢。</p>"; 7 8 SendMailHelper.Sendmail_(subjectInfo, bodyInfo); 9 }
1 public static void Sendmail_(string subjectInfo, string bodyInfo) 2 { 3 try 4 { 5 string senderServerIp = ConfigurationManager.ConnectionStrings["MailServerIP"].ConnectionString; 6 string toMailAddress = ConfigurationManager.ConnectionStrings["toMailAddress"].ConnectionString; 7 string fromMailAddress = ConfigurationManager.ConnectionStrings["fromMailAddress"].ConnectionString; 8 string mailUsername = ConfigurationManager.ConnectionStrings["mailUsername"].ConnectionString; 9 string mailPassword = ConfigurationManager.ConnectionStrings["mailPassword"].ConnectionString; 10 string mailPort = ConfigurationManager.ConnectionStrings["MailServerPort"].ConnectionString; 11 string cc = ConfigurationManager.ConnectionStrings["ccMailAddress"].ConnectionString; 12 13 MyEmail email = new MyEmail(senderServerIp, toMailAddress, fromMailAddress, subjectInfo, bodyInfo, mailUsername, mailPassword, mailPort, cc, true, false); //注: aliyun需将最后参数改为:false,true 14 email.Send(); 15 } 16 catch (Exception ex) 17 { 18 Console.WriteLine(ex.ToString()); 19 } 20 }
3.3 具体实现
3.3.1 QQ邮箱:使用System.Web.Mail
1 private System.Web.Mail.MailMessage mMessage; 2 3 public MyEmail(string server, string toMail, string fromMail, string subject, string emailBody, string username, string password, string port,string cc, bool sslEnable, bool pwdCheckEnable) 4 { 5 try 6 { 7 //for System.Web.Mail: QQ MAIL 8 mMessage = new System.Web.Mail.MailMessage(); 9 mMessage.Priority = System.Web.Mail.MailPriority.Normal; 10 mMessage.From = fromMail; 11 mMessage.To = toMail; 12 mMessage.Cc = cc; 13 mMessage.Subject = subject; 14 mMessage.BodyFormat = System.Web.Mail.MailFormat.Html; 15 mMessage.BodyEncoding = Encoding.UTF8; 16 mMessage.Body = emailBody; 17 mMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); //basic authentication 18 mMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", fromMail); //set your username here 19 mMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", password); //set your password here 20 mMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", port);//set port 21 mMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", sslEnable);//set is ssl 22 System.Web.Mail.SmtpMail.SmtpServer = server; 23 } 24 catch (Exception ex) 25 { 26 } 27 }
1 public void Send() 2 { 3 try 4 { 5 //for System.Web.Mail 6 if (mMessage != null) 7 { 8 System.Web.Mail.SmtpMail.Send(mMessage); 9 } 10 } 11 catch (Exception ex) 12 { 13 Console.WriteLine(ex.ToString()); 14 } 15 }
3.3.2 阿里云邮箱:使用System.Net.Mail
1 private MailMessage mMailMessage; 2 private SmtpClient mSmtpClient; 3 private int mSenderPort; 4 private string mSenderServerHost; 5 private string mSenderPassword; 6 private string mSenderUsername; 7 private bool mEnableSsl; 8 private bool mEnablePwdAuthentication; 9 10 public MyEmail(string server, string toMail, string fromMail, string subject, string emailBody, string username, string password, string port,string cc, bool sslEnable, bool pwdCheckEnable) 11 { 12 try 13 { 14 //for System.Net.Mail: Aliyun 15 mMailMessage = new MailMessage(); 16 mMailMessage.To.Add(toMail); 17 mMailMessage.From = new MailAddress(fromMail); 18 mMailMessage.Subject = subject; 19 mMailMessage.Body = emailBody; 20 mMailMessage.IsBodyHtml = true; 21 mMailMessage.BodyEncoding = System.Text.Encoding.UTF8; 22 mMailMessage.Priority = MailPriority.Normal; 23 if (!string.IsNullOrEmpty(cc)) 24 mMailMessage.CC.Add(cc); 25 this.mSenderServerHost = server; 26 this.mSenderUsername = fromMail; 27 this.mSenderPassword = password; 28 this.mSenderPort = Convert.ToInt32(port); 29 this.mEnableSsl = sslEnable; 30 this.mEnablePwdAuthentication = pwdCheckEnable; 31 } 32 catch (Exception ex) 33 { 34 Console.WriteLine(ex.ToString()); 35 } 36 }
1 public void Send() 2 { 3 try 4 { 5 //for System.Net.Mail 6 if (mMailMessage != null) 7 { 8 mSmtpClient = new SmtpClient(); 9 //mSmtpClient.Host = "smtp." + mMailMessage.From.Host; 10 mSmtpClient.Host = this.mSenderServerHost; 11 mSmtpClient.Port = this.mSenderPort; 12 mSmtpClient.UseDefaultCredentials = false; 13 mSmtpClient.EnableSsl = this.mEnableSsl; 14 if (this.mEnablePwdAuthentication) 15 { 16 System.Net.NetworkCredential nc = new System.Net.NetworkCredential(this.mSenderUsername, this.mSenderPassword); 17 //mSmtpClient.Credentials = new System.Net.NetworkCredential(this.mSenderUsername, this.mSenderPassword); 18 //NTLM: Secure Password Authentication in Microsoft Outlook Express 19 mSmtpClient.Credentials = nc.GetCredential(mSmtpClient.Host, mSmtpClient.Port, "NTLM"); 20 } 21 else 22 { 23 mSmtpClient.Credentials = new System.Net.NetworkCredential(this.mSenderUsername, this.mSenderPassword); 24 } 25 mSmtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; 26 mSmtpClient.Send(mMailMessage); 27 } 28 } 29 catch (Exception ex) 30 { 31 Console.WriteLine(ex.ToString()); 32 } 33 }
出处:https://www.cnblogs.com/mbcxm/p/16467039.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数