C# 通过Smtp 完成系统发送邮件

  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("<Table class=\"gridtable\">");
 34             //emailcontent.Append("<tr>");
 35             //emailcontent.Append("<th>Req_ID</th>");
 36             //emailcontent.Append("<th>Requester</th>");
 37             //emailcontent.Append("<th>Country</th>");
 38             //emailcontent.Append("<th>Env</th>");
 39             //emailcontent.Append("</tr>");
 40         }
 41         public void setContent(string str)
 42         {
 43             //ErrorList.AddLast(request);
 44             //emailcontent.Append("<tr>");
 45             //emailcontent.Append("<td>" + request.Req_ID  + "</td>");
 46             //emailcontent.Append("<td>" + request.Requester + "</td>");
 47             //emailcontent.Append("<td>" + request.Country  +"</td>");
 48             //emailcontent.Append("<td>" + request.Env +"</td>");
 49             //emailcontent.Append("</tr>");
 50
 51             emailcontent.Append(str);
 52
 53             emailcontent.Append("<br />");
 54         }
 55
 56         public void Send()
 57         {
 58             // emailcontent.Append("</Table>");
 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("[email protected]");
 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 = "<!DOCTYPE html><html><head><style type=\"text/css\">table.gridtable {font-family: verdana,arial,sans-serif;font-size:11px;color:#333333;border-width: 1px;border-color: #666666;border-collapse: collapse;}";
 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;}</style></head>";
 96             content = content + "<body><span style=\"font-family:Arial;font-size:16px;color:blue\"><br />An error has occurred <b></b> <br /><br />Following error happened.  <br /> Details as below . <br /><br /></span>";
 97             content = content + emailcontent.ToString();
 98             content = content + "<hr width=50% align=left /><span style=\"font-family:Arial;font-size:16px;color:blue\">Team Support <br /></span></body></html>";
 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
149 <configuration>
150   <configSections>
151     <section name ="email" type ="WebAPI.Common.EmailSectionHandler" />
152   </configSections>
153
154   <email>
155     <EmailFrom>[email protected]</EmailFrom>
156     <EmailTo>Email Address</EmailTo>
157     <EmailCC></EmailCC>
158     <EmailBCC></EmailBCC>
159     <EmailSubject>ERROR Message</EmailSubject>
160   </email>
161 </configuration>
162
163 //3。调用EmailHelper,并发送相关信息
164   EmailHelper email = new EmailHelper();
165             email.setContent("ErrorMessage");
166             email.Send();   // 以上内容在目前项目SMTP 服务器开启的情况下,可以正常发送邮件

   //4. 配置server 端的SMTP(以下内容:转载,未经自己测试) 

安装 SMTP 服务器

以下是安装 SMTP 服务器功能的步骤:

  1. 打开“服务器管理器”:单击键盘上的 Windows 按钮。输入“服务器管理器”。在“结果”窗口中,单击“服务器管理器”。。
  2. 单击左窗格中的“仪表板”。。
  3. 单击“添加角色和功能”。也可以从右上角的“管理”菜单打开“添加角色和功能”。
  4. 在“开始之前”窗口上,单击“下一步”。
  5. 在“安装类型”中,单击“基于角色或基于功能的安装”。单击“下一步”。
  6. 在“服务器选择”中,依次单击“从服务器池中选择服务器”、所需的服务器和“下一步”。“服务器选择”窗口中会列出已使用“添加服务器”添加在“服务器管理器”中的服务器。默认情况下,本地服务器处于选中状态。向服务器管理器添加服务器列出了在 Windows Server 2012 上使用“添加服务器”的步骤。
  7. 在“服务器角色”窗口中,单击“下一步”。
  8. 在“功能”窗口中,选中“SMTP 服务器”。如果出现提示,请单击“添加功能”。单击“下一步”。
  9. 在“确认”中,选择“如果需要,自动重新启动目标服务器”,然后单击“安装”。完成时,单击“关闭”。

配置 SMTP 服务器

以下是使用 IIS 6.0 管理器配置 SMTP 虚拟服务器的步骤:

    1. 打开 IIS 管理器:单击键盘上的 Windows 按钮。输入“IIS”。在“结果”窗口中,单击“Internet 信息服务 (IIS) 6.0 管理器”。
    2. 展开计算机名。右键单击“[SMTP 虚拟服务器 1]”,然后单击“属性”。
    3. 在“访问”选项卡中,单击“中继”按钮。
    4. 单击“添加”。对于“单台计算机”,输入 127.0.0.1,然后单击“确定”。
      通过添加 127.0.0.1,我们将允许本地服务器从此 SMTP 服务器发送消息。如果你希望其他计算机从此 SMTP 服务器发送消息,请输入其 IP 地址。
    5. 在“传递”选项卡中,单击“出站安全”。选择以下选项:
      匿名访问:不需要帐户名或密码。此选项将禁用 SMTP 服务器身份验证。
      基本身份验证:以明文形式发送要连接的服务器的帐户名和密码。输入的帐户用于传输电子邮件。向个人帐户或 Exchange 帐户发送电子邮件时,可以选择“基本身份验证”。因为凭据将以明文形式传递,所以建议启用“TLS 加密”。
      集成的 Windows 身份验证:Windows 域帐户名和密码用于进行身份验证。输入的帐户用于传输电子邮件。
      TLS 加密:与 SSL 相似,TLS 用于保护连接的安全。需要在此服务器上安装一个有效的 SSL 服务器证书。
      Tip技巧
      若要使用个人电子邮件帐户(包括 Exchange 帐户)测试核心 SMTP 功能,请选择“匿名访问”。选择“基本身份验证”时,SMTP 使用 AUTH 命令。一些电子邮件提供商由于 AUTH 命令可能会失败。如果 AUTH 命令失败,则错误可能会记录到 SMTP 服务器上的 Windows 事件日志中。
    6. 在“传递”选项卡中,单击“出站连接”。默认情况下,TCP 端口为 25。如果其他端口已在防火墙内打开,可以输入其他端口。单击“确定”。
    7. 在“传递”选项卡中,单击“高级”。默认情况下,会列出本地服务器的“完全限定的域名”。根据 Internet 提供商,“智能主机”属性可以留空。你可能需要联系 Internet 提供商来确认是否需要“智能主机”。否则你可能无法进入 smtp.EMailProvider.com。
      note便笺
      “智能主机”(也称为中继主机)是 Exchange Server 专用于路由所有传出消息的服务器。“智能主机”收到消息之后,会将消息转发到远程域。“智能主机”的目标是提高 Exchange Server 的性能。Exchange Server 只向智能主机进行传输;而不是反复联系远程域,直到建立连接。
    8. 单击“确定”关闭所有窗口。
    9. 重新启动 SMTP 服务器:右键单击“[SMTP 虚拟服务器 1]”,然后依次单击“停止”和“启动”。必须重新启动才能应用 SMTP 服务器设置。


原文地址:https://www.cnblogs.com/allenzhang/p/11104070.html

时间: 2025-01-17 22:13:11

C# 通过Smtp 完成系统发送邮件的相关文章

关于java使用网易服务器smtp.163.com发送邮件,连接失败的问题

最近在写一个注册成功时,需要邮件激活的web注册功能,所以选用了网易服务器smtp.163.com作为服务器主机来向注册用户发送邮件.在调试的过程中老碰到连接失败的异常(因为弄好了,忘了复制下异常信息了,所以没有). 整个调试过程,我连配置文件都检测了好几遍,代码也看了几遍.没办法还是调试不出来.那么现在我说一下用网易的服务器smtp.163.com发送邮件的几个非代码关键点: 1.注册163邮箱,启动smtp.163.com服务器(注册登录进去,在设置里面,根据它的提示启动服务器) 2.163

为用户添加了被删用户的smtp地址,作为备用smtp地址之后发送邮件不可达

问题描述: 是这样,有2个老用户,[email protected]和[email protected]. 现在把wangdong这个用户删掉,给wang这个用户增加一个smtp地址:[email protected],然后我用outlook客户端新建邮件,输入[email protected],outlook客户端自动给我解析成一个中文名"王东",我无法修改,点击发送邮件后,退信报错:IMCEAEX-_o=First+20Organization_ou=Exchange+20Admi

通过SMTP中继服务器发送邮件的问题

昨天写了一篇 SMTP中继服务器部署的文章,有朋友问我本地多个应用使用了不同的邮件通知地址,但发邮件的时候只能使用SMTP中继服务器上配置的地址才能发送,如下图: 所有的业务应用都必须配置成上图中的地址才可以发送邮件通知. 针对以上问题,我们可以通过2种方法来解决: 第1种方法: 针对客户的业务应用及多功能设备使用的邮件通知地址在Office 365 exchange online上创建相应的:共享邮箱 ,如下图: 在共享邮箱中添加:发送方式的权限给SMTP中继服务器中的office 365帐户

系统发送邮件过程

一. 编写Linux配置文件和邮箱建立联系 vim /etc/mail.rc set [email protected]     smtp=smtp.163.com set smtp-auth-user=xxxxxxxxxx163.com smtp-auth-password=xxxxxx(邮箱链接密码) smtp-auth=login 二.重启邮件服务 systemctl restart postfix.service 原文地址:https://www.cnblogs.com/wobenwux

使用Python定时执行一任务,自动登录某web系统,生成报表,然后发送邮件给指定人员

一.项目需求 每周从A系统生成一张Excel报表,发送此报表给指定人员,相关人员依据此报表去完成后续的工作. 项目限制: 1.无法通过EDI系统交互的方式从后台读取数据 2.由于公司网络环境限制,不能使用SMTP发送邮件,比如,不能通过smtp.163.com发送邮件 二.解决方案 模拟人工操作,登录系统,输入相应查询条件,生成报表,保存后发送邮件给指定人员. 采用技术:采用Python 三.关键点 1.使用selenium模拟登录浏览器 '使用IE浏览器 driver.webdriver.Ie

Linux学习笔记:使用外部SMTP发送邮件

在CENTOS 6.3上,安装mailx,即可使用外部smtp服务器来发送邮件, yum install mailx -y 安装好后,编辑配置文件 mailx -V 12.4 7/29/08  <<mailx的版本号 rpm -qc mailx /etc/mail.rc   <<网上很多教程写了配置文件名是nail.rc,难道是旧版的缘故? vi /etc/mail.rc 在文件最后加入以下内容.(关于这个配置文件,man是没有资料的,我也是参考网上别的教程,如果要具体研究,估计要

python使用SMTP发送邮件

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地.通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟.SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件. 在自动化测试过程中,当测试执行完成之后,需要自己找到测试报告的位置,并

使用python的smtp模块发送邮件

使用Python的smtp模块,可以十分方便的编写自己的smtp客户端,来发送邮件.现在发现,不能使用腾讯的smtp服务器去法送,但是可以使用163的smtp服务器去发送邮件. 直接上代码吧 #!/usr/bin/env python ''' a simple smtp client ''' import smtplib from email.mime.text import MIMEText def sendMail(user,pwd,to,subject,text): msg=MIMETex

使用Python SMTP发送邮件

import smtplibfrom email.mime.text import MIMEText # 服务器SMPTserver = "smtp.163.com"# 发送邮件的地址(自己的邮箱地址)sender = "[email protected]"# 授权密码(不等同于登录密码)password = "xxxxxxxxxxx"# 发送的文本内容message = "zhf is a good man"# 转为邮件文本