.NET中使用SMTP发送邮件

整个类的代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net.Mail;
using System.Text;
using System.IO;

namespace ZC.Common.Email
{
    /// <summary>
    ///MailHelper 邮件操作类
    /// </summary>
    public class MailHelper
    {
        public MailHelper()
        {

        }

        #region
        /// <summary>
        /// 发送邮件类
        /// </summary>
        /// <param name="mailTo">要发送的邮箱</param>
        /// <param name="mailSubject">邮箱主题</param>
        /// <param name="mailContent">邮箱内容</param>
        /// <returns>返回发送邮箱的结果</returns>
        public static bool SendEmail(string mailTo, string mailSubject, string mailContent)
        {
            // 设置发送方的邮件信息,设置发送邮件的服务器
            string smtpServer = "smtp.exmail.qq.com"; //SMTP服务器,腾讯企业邮箱是默认启用的,个人的QQ要去设置启用
            string mailFrom = "XXX"; //发送方的登陆用户名
            string userPassword = "XXX";//发送方的登陆密码

            // 邮件服务设置
            SmtpClient smtpClient = new SmtpClient();
            smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定电子邮件发送方式
            smtpClient.Host = smtpServer; //指定SMTP服务器
            smtpClient.Port = 25;  // QQ 端口465或587  ; tom 端口 25
            smtpClient.Credentials = new System.Net.NetworkCredential(mailFrom, userPassword);  //发送方用户名和密码
            // 发送邮件设置        
            MailMessage mailMessage = new MailMessage(mailFrom, mailTo); // 发送人和收件人
            mailMessage.Subject = mailSubject;//主题
            mailMessage.Body = mailContent;//内容
            mailMessage.BodyEncoding = Encoding.UTF8;//正文编码
            mailMessage.IsBodyHtml = true;//设置为HTML格式
            mailMessage.Priority = MailPriority.Low;//优先级
            try
            {
                smtpClient.Send(mailMessage); // 发送邮件
                return true;
            }
            catch (SmtpException ex)
            {
                return false;
            }
        }
        #endregion
    }
}

 

上面是邮件类的定义和配置,下面我们来看具体使用方法,例如如发送邮件给用户让其点击邮件内容找回密码

     /// <summary>
        /// 发送邮件使用方法
        /// </summary>
        /// <param name="mailTo">接收人Email</param>
        /// <param name="mailSubject">验证码</param>

public HttpResponseMessage FindPwd(string Email,string Code)
        {
            var VC=Session["ValidateCode"];  //程序内部的验证码
            if((VC==null||VC.ToString()!=Code))  //验证传递过来的验证码是否正确
            {
                return No(1,"验证码无效,请重新录入");
            }
            var Uc=ComUcManager.Get(new{Email});  //根据邮箱得到用户信息
            if(Uc==null)
            {
                return No(2,"用户邮箱不存在,请确认后再试");
            }
            var Key=MD5.G(Uc.Password);  //加密用户密码
            var Url = "http://www.XXX.com/User/ResetPwd?UId=" + Uc.Id + "&Key=" + Key;  //将用户表的用户Id和密码传递到修改密码页面的地址上
            var C=new System.Text.StringBuilder();    //邮件内容
            C.Append("<div class='xbody' style='width:580px; margin:0 auto;'>");
            C.Append("    <div class='logo'><a href='http://www.XXX.com' target='_blank' style='width:153px; height:82px; background:url(http://www.XXX.com/images/logo.jpg) no-repeat; display:block;'></a></div>");
            C.Append("    <div class='content' style='width:580px; margin:0 auto; padding:30px 0;'>");
            C.Append("        <h4 style='line-height:26px; font-size:24px; color:#333; font-weight:normal;'>亲爱的用户:</h4>");
            C.Append("        <p style='line-height:26px; font-size:16px; color:#333; margin-top:20px;'>您好!</p>");
            C.Append("        <p style='line-height:26px; font-size:16px; color:#333; text-indent:2em;'>您在<span>"+DateTime.Now.ToString("yyyy年M月d日 hh:mm:ss")+"</span>提交了邮箱 <a href='"+Url+"' style='line-height:26px; font-size:16px; color:#f00; text-decoration:underline;'>找回密码</a> 请求,请点击此处修改密码.为了保证您帐号的安全,该链接有效期为24小时,并且点击一次后失效!</p>");
            C.Append("        <p style='line-height:26px; font-size:16px; color:#333; text-align:right; margin-top:10px;'>XXX帐号中心</p>");
            C.Append("    <p style='line-height:26px; font-size:16px; color:#333; text-align:right;'>"+DateTime.Now.ToString("yyyy年M月d日")+"</p>");
            C.Append("   </div>");
            C.Append("</div>");
            if(ZC.Common.Email.MailHelper.SendEmail(Email,"XXX用户找回密码邮件",C.ToString()))
            {
                return Ok("找回密码邮件已发送到您的邮箱,请查收");
            }
            return No("发送失败,请稍后再试");
        }

 

执行的结果是,当页面上用户触发这个发送邮件的方法时,系统会给用户发送一封邮件,内容就是上面自己定义好的,当用户查看链接并点击时(http://www.XXX.com/User/ResetPwd?UId=" + Uc.Id + "&Key=" + Key),用户将会进入网站的修改密码页面,剩下的就是在修改密码页面把用户填写的新密码去更新UId的账户密码,整个过程就这样完成了。

你可能感兴趣的:(.net)