C# 通过Smtp 完成系统发送邮件
2021-05-29 06:02
阅读:523
YPE html>
标签:host context ddr 匿名 下一步 reac count win 中继
1 //1. 新建EmailHelper 类 2 using System; 3 using System.Collections.Generic; 4 using System.Configuration; 5 using System.Linq; 6 using System.Net.Mail; 7 using System.Web; 8 9 namespace WebAPI.Common 10 { 11 public class EmailHelper 12 { 13 private MailMessage msg; 14 private string[] emailfrom; 15 private string[] emailto; 16 private string[] emailcc; 17 private string[] emailbcc; 18 private string emailsubject; 19 private System.Text.StringBuilder emailcontent; 20 public EmailHelper() 21 { 22 msg = new MailMessage(); 23 Emailpara email = System.Configuration.ConfigurationManager.GetSection("email") as Emailpara; 24 25 emailfrom = email.emailfrom.Split(‘;‘); 26 emailto = email.emailto.Split(‘;‘); 27 emailcc = email.emailcc.Split(‘;‘); 28 emailbcc = email.emailbcc.Split(‘;‘); 29 emailsubject = email.emailsubject; 30 31 emailcontent = new System.Text.StringBuilder(); 32 33 //emailcontent.Append(""); 34 //emailcontent.Append("
"); 59 //set emailTo 60 foreach (string tostr in emailto) 61 { 62 msg.To.Add(tostr); 63 } 65 //set emailCC 66 if (emailcc.Length > 0 && !String.Empty.Equals(emailcc[0])) 67 { 68 foreach (string ccstr in emailcc) 69 { 70 msg.CC.Add(ccstr); 71 } 72 } 73 //set emailBcc 74 if (emailbcc.Length > 0 && !String.Empty.Equals(emailbcc[0])) 75 { 76 77 foreach (string bccstr in emailbcc) 78 { 79 msg.Bcc.Add(bccstr); 80 } 81 } 82 // set emailFrom 83 if (emailfrom.Length > 0 && !String.Empty.Equals(emailfrom)) 84 msg.From = new MailAddress(emailfrom[0]); 85 else 86 msg.From = new MailAddress("DO.NOT.REPLY.TO@Test.COM"); 87 88 msg.Subject = emailsubject; 89 msg.SubjectEncoding = System.Text.Encoding.UTF8; 90 91 msg.BodyEncoding = System.Text.Encoding.UTF8; 92 msg.IsBodyHtml = true; 93 msg.Priority = MailPriority.Normal; 94 string content = " "; 95 content = content + "table.gridtable th {border-width: 1px;padding: 8px; border-style: solid;border-color: #666666;background-color: #dedede;}table.gridtable td {border-width: 1px; padding: 8px;border-style: solid;border-color: #666666; background-color: #ffffff;}"; 96 content = content + ""); 35 //emailcontent.Append(" "); 40 } 41 public void setContent(string str) 42 { 43 //ErrorList.AddLast(request); 44 //emailcontent.Append("Req_ID "); 36 //emailcontent.Append("Requester "); 37 //emailcontent.Append("Country "); 38 //emailcontent.Append("Env "); 39 //emailcontent.Append(""); 45 //emailcontent.Append(" "); 50 51 emailcontent.Append(str); 52 53 emailcontent.Append("" + request.Req_ID + " "); 46 //emailcontent.Append("" + request.Requester + " "); 47 //emailcontent.Append("" + request.Country +" "); 48 //emailcontent.Append("" + request.Env +" "); 49 //emailcontent.Append("
"); 54 } 55 56 public void Send() 57 { 58 // emailcontent.Append("
An error has occurred
Following error happened.
Details as below .
"; 97 content = content + emailcontent.ToString(); 98 content = content + "
Team Support
"; 99 100 msg.Body = content; 101 msg.BodyEncoding = System.Text.Encoding.UTF8; 102 SmtpClient client = new SmtpClient(); 103 client.Host = "localhost"; // important thing, 104 try 105 { 106 client.Send(msg); 107 } 108 catch (Exception ex) 109 { 110 111 } 113 } 115 } 116 public class EmailSectionHandler : IConfigurationSectionHandler 117 { 118 public object Create(object parent, object configContext, System.Xml.XmlNode section) 119 { 120 string emailfrom = section.SelectSingleNode("EmailFrom").InnerText; 121 string emailto = section.SelectSingleNode("EmailTo").InnerText; 122 string emailcc = section.SelectSingleNode("EmailCC").InnerText; 123 string emailbcc = section.SelectSingleNode("EmailBCC").InnerText; 124 string emailsubject = section.SelectSingleNode("EmailSubject").InnerText; 125 Emailpara email = new Emailpara(); 126 email.emailfrom = emailfrom; 127 email.emailto = emailto; 128 email.emailcc = emailcc; 129 email.emailbcc = emailbcc; 130 email.emailsubject = emailsubject; 131 132 return email; 133 } 134 } 135 136 public class Emailpara 137 { 138 public string emailfrom { get; set; } 139 public string emailto { get; set; } 140 public string emailcc { get; set; } 141 public string emailbcc { get; set; } 142 public string emailsubject { get; set; } 143 144 } 145 } 146 147 //2。配置Web.config 148 149150 162 163 //3。调用EmailHelper,并发送相关信息 164 EmailHelper email = new EmailHelper(); 165 email.setContent("ErrorMessage"); 166 email.Send();151 153 154"email" type ="WebAPI.Common.EmailSectionHandler" /> 152 155 161DO.NOT.REPLY.TO@Test.COM 156Email Address 157158 159 ERROR Message 160
// 以上内容在目前项目SMTP 服务器开启的情况下,可以正常发送邮件
//4. 配置server 端的SMTP(以下内容:转载,未经自己测试)
安装 SMTP 服务器
以下是安装 SMTP 服务器功能的步骤:
- 打开“服务器管理器”:单击键盘上的 Windows 按钮。输入“服务器管理器”。在“结果”窗口中,单击“服务器管理器”。。
- 单击左窗格中的“仪表板”。。
- 单击“添加角色和功能”。也可以从右上角的“管理”菜单打开“添加角色和功能”。
- 在“开始之前”窗口上,单击“下一步”。
- 在“安装类型”中,单击“基于角色或基于功能的安装”。单击“下一步”。
- 在“服务器选择”中,依次单击“从服务器池中选择服务器”、所需的服务器和“下一步”。“服务器选择”窗口中会列出已使用“添加服务器”添加在“服务器管理器”中的服务器。默认情况下,本地服务器处于选中状态。向服务器管理器添加服务器列出了在 Windows Server 2012 上使用“添加服务器”的步骤。
- 在“服务器角色”窗口中,单击“下一步”。
- 在“功能”窗口中,选中“SMTP 服务器”。如果出现提示,请单击“添加功能”。单击“下一步”。
- 在“确认”中,选择“如果需要,自动重新启动目标服务器”,然后单击“安装”。完成时,单击“关闭”。
配置 SMTP 服务器
以下是使用 IIS 6.0 管理器配置 SMTP 虚拟服务器的步骤:
- 打开 IIS 管理器:单击键盘上的 Windows 按钮。输入“IIS”。在“结果”窗口中,单击“Internet 信息服务 (IIS) 6.0 管理器”。
- 展开计算机名。右键单击“[SMTP 虚拟服务器 1]”,然后单击“属性”。
- 在“访问”选项卡中,单击“中继”按钮。
- 单击“添加”。对于“单台计算机”,输入 127.0.0.1,然后单击“确定”。
通过添加 127.0.0.1,我们将允许本地服务器从此 SMTP 服务器发送消息。如果你希望其他计算机从此 SMTP 服务器发送消息,请输入其 IP 地址。 - 在“传递”选项卡中,单击“出站安全”。选择以下选项:
匿名访问:不需要帐户名或密码。此选项将禁用 SMTP 服务器身份验证。
基本身份验证:以明文形式发送要连接的服务器的帐户名和密码。输入的帐户用于传输电子邮件。向个人帐户或 Exchange 帐户发送电子邮件时,可以选择“基本身份验证”。因为凭据将以明文形式传递,所以建议启用“TLS 加密”。
集成的 Windows 身份验证:Windows 域帐户名和密码用于进行身份验证。输入的帐户用于传输电子邮件。
TLS 加密:与 SSL 相似,TLS 用于保护连接的安全。需要在此服务器上安装一个有效的 SSL 服务器证书。- Tip技巧
- 若要使用个人电子邮件帐户(包括 Exchange 帐户)测试核心 SMTP 功能,请选择“匿名访问”。选择“基本身份验证”时,SMTP 使用 AUTH 命令。一些电子邮件提供商由于 AUTH 命令可能会失败。如果 AUTH 命令失败,则错误可能会记录到 SMTP 服务器上的 Windows 事件日志中。
- 在“传递”选项卡中,单击“出站连接”。默认情况下,TCP 端口为 25。如果其他端口已在防火墙内打开,可以输入其他端口。单击“确定”。
- 在“传递”选项卡中,单击“高级”。默认情况下,会列出本地服务器的“完全限定的域名”。根据 Internet 提供商,“智能主机”属性可以留空。你可能需要联系 Internet 提供商来确认是否需要“智能主机”。否则你可能无法进入 smtp.EMailProvider.com。
- note便笺
- “智能主机”(也称为中继主机)是 Exchange Server 专用于路由所有传出消息的服务器。“智能主机”收到消息之后,会将消息转发到远程域。“智能主机”的目标是提高 Exchange Server 的性能。Exchange Server 只向智能主机进行传输;而不是反复联系远程域,直到建立连接。
- 单击“确定”关闭所有窗口。
- 重新启动 SMTP 服务器:右键单击“[SMTP 虚拟服务器 1]”,然后依次单击“停止”和“启动”。必须重新启动才能应用 SMTP 服务器设置。
C# 通过Smtp 完成系统发送邮件
标签:host context ddr 匿名 下一步 reac count win 中继
原文地址:https://www.cnblogs.com/allenzhang/p/11104070.html
文章来自:搜素材网的编程语言模块,转载请注明文章出处。
文章标题:C# 通过Smtp 完成系统发送邮件
文章链接:http://soscw.com/index.php/essay/88981.html
文章标题:C# 通过Smtp 完成系统发送邮件
文章链接:http://soscw.com/index.php/essay/88981.html
评论
亲,登录后才可以留言!