ASP.NET发送邮件

引入System.Net.Mail命名空间,主要用到其中的MailMessage类和SmtpClient类。

其中MailMessage主要用来构建一条邮件信息。包括邮件的标题、内容、发件人、收件人、邮件内容的编码格式等。而SmtpClient类则用获取或者设置用于验证发件人身份的凭据、获取或设置用于 SMTP 事务的端口、获取或设置用于 SMTP 事务的主机的名称或 IP 地址。这些都可以在msdn中查到。下面废话不多,看代码

 1         /// <summary>
 2         /// 初始化邮件信息
 3         /// </summary>
 4         /// <param name="mailFrom">发件邮箱</param>
 5         /// <param name="mailTo">收件邮箱</param>
 6         /// <returns>返回邮件</returns>
 7         private MailMessage InitMail(string mailFrom, string mailTo)
 8         {
 9             MailMessage mm = new MailMessage();
10             mm.From = new MailAddress(mailFrom);
11             mm.To.Add(new MailAddress(mailTo));
12             mm.Subject = txtTitle.Value.Trim();
13 
14             // 构建 邮件body信息
15             StringBuilder sb = new StringBuilder("发送人姓名:" + txtName.Value.Trim() + "\n\t");
16             sb.AppendLine(" 发送人手机号码:" + txtCellPhone.Value.Trim());
17             sb.AppendLine("发送人联系方式:" + txtContact.Value.Trim());
18             sb.AppendLine("发送人电子邮件:" + txtEmail.Value.Trim());
19             sb.AppendLine("发送问题:" + txtContent.Value.Trim());
20             mm.Body = sb.ToString();
21 
22             mm.SubjectEncoding = Encoding.UTF8;
23             mm.BodyEncoding = Encoding.UTF8;
24 
25             mm.IsBodyHtml = false;
26             mm.Priority = MailPriority.Normal;
27 
28             return mm;
29         }

这一段代码用来初始化一条邮件信息。其中参数看下文介绍。

其中mm.From设置发件人的邮件地址。

  mm.To是MailAddressCollection的集合。向其中加入一个邮件地址。当然如果要发送多个邮箱的话。可以以此add新的邮件地址。

  mm.Subject设置邮件的标题。

  mm.SubjectEncoding和mm.BodyEncoding设置邮件标题和邮件正文的编码格式。

  mm.IsBodyHtml设置邮件正文显示是否识别html代码。

  mm.Priority设置邮件MailMessage 的优先级。这个是一个枚举类型的东西。

初始化邮件后,下面要做的就是发送了。要用到SmtpClient类中的send发送方法。看代码

 1         /// <summary>
 2         /// 发送邮件
 3       /// </summary>
 4         /// <param name="mailFrom">发件邮箱</param>
 5         /// <param name="mailTo">收件邮箱</param>
 6         /// <param name="pwd">发件邮箱密码</param>
 7         /// <param name="smtp">获取或设置用于 SMTP 事务的主机的名称或 IP 地址</param>
 8         private void SendMail(string mailFrom, string mailTo, string pwd, string smtp)
 9         {
10             SmtpClient sclient = new SmtpClient();
11             sclient.Credentials = new System.Net.NetworkCredential(mailFrom, pwd);
12             sclient.Port = 25;
13             sclient.Host = smtp;
14             try
15             {
16                 sclient.Send(InitMail(mailFrom, mailTo));
17                 Page.ClientScript.RegisterStartupScript(GetType(), "js", "alert('邮件发送成功!')", true);
18             }
19             catch (SmtpException ex)
20             {
21                 Page.ClientScript.RegisterStartupScript(GetType(), "js", "alert('发送失败,请重新发送!')", true);
22             }
23         }

发送邮件。实例化一个SmtpClient类sclient,

sclient.Credentials获取或设置用于验证发件人身份的凭据。

 sclient.Port获取或设置用于 SMTP 事务的端口。

sclient.Host获取或设置用于 SMTP 事务的主机的名称或 IP 地址。

调用sclient.Send方法方法发送邮件。

最后来解释下代码中参数的问题。

 1         /// <summary>
 2         /// 
 3         /// </summary>
 4         /// <param name="sender"></param>
 5         /// <param name="e"></param>
 6         protected void btnSubmit_Click(object sender, EventArgs e)
 7         {
 8             string mailForm = WebConfigurationManager.AppSettings["EmailFrom"];
 9             string mailTo = WebConfigurationManager.AppSettings["EmailTo"];
10             string pwd = WebConfigurationManager.AppSettings["Pwd"];
11             string smtp = WebConfigurationManager.AppSettings["Smtp"];
12             SendMail(mailForm, mailTo, pwd, smtp);
13         }

mailForm, mailTo, pwd, smtp。分别是发件邮箱地址。收件邮箱地址。发件邮箱密码。以及SMTP 事务的主机的名称或 IP 地址。然后呢。这些从webconfig中获取的设置项目。

具体配置如下:

 1 <configuration>
 2   <appSettings>
 3     <!--发送邮件的邮箱地址-->
 4     <add key="EmailFrom" value=""/>
 5     <!--接收邮件的邮箱地址-->
 6     <add key="EmailTo" value=""/>
 7     <!--发送邮件的邮箱密码-->
 8     <add key="Pwd" value=""/>
 9     <!--设置用于 SMTP 事务的主机的名称-->
10     <add key="Smtp" value=""/>
11   </appSettings>

webconfig配置不全。只是添加了一个appSettings节点。剩下的就是点击button发送了。

 

posted @ 2013-05-14 09:15  for.life  阅读(363)  评论(1编辑  收藏  举报