1、首先写一个Common类,将发送邮件的代码写到里面
/// <summary> /// 发送邮件 /// </summary> /// <param name="toEmail">要发送给哪个邮箱</param> /// <param name="subject">邮箱主题</param> /// <param name="body">邮箱内容</param> /// <returns>返回发送邮箱的结果</returns> public static bool SendEmail(string toEmail, string subject, string body) { //配置文件中存储的发送人的服务器以及账号信息 string smtpServer = ConfigurationManager.AppSettings["SmtpServer"]; string smtpFrom = ConfigurationManager.AppSettings["SmtpFrom"]; string smtpUserName = ConfigurationManager.AppSettings["SmtpUserName"]; string smtpPassword = ConfigurationManager.AppSettings["SmtpPassword"]; MailMessage mailObj = new MailMessage(); mailObj.IsBodyHtml = true; mailObj.From = new MailAddress(smtpFrom); //发送人邮箱地址 mailObj.SubjectEncoding= System.Text.Encoding.UTF8; mailObj.BodyEncoding = System.Text.Encoding.UTF8; mailObj.Priority = MailPriority.High;//邮件优先级 mailObj.To.Add(toEmail); //收件人邮箱地址 mailObj.Subject = subject; //主题 mailObj.Body = body; //正文 SmtpClient smtp = new SmtpClient();//通过.Net内置的SmtpClient类和邮件服务器进行通讯,发送邮件。 smtp.Host = smtpServer; //smtp服务器名称 smtp.UseDefaultCredentials = false; smtp.Credentials = new NetworkCredential(smtpUserName, smtpPassword); //发送人的登录名和密码 try { smtp.Send(mailObj); return true; } catch (Exception ex) { return false; throw ex; } }
*下面是配置文件中的发件人以及邮箱配置方式(放在配置文件方便修改,也可以直接在发送邮件类中写)
2、在controller中调用即可。不过在163邮箱需要配置一下,开启smtp,并且需要将你发送邮件里面配置的smtp密码改为它要求的。
下面测试调用即可。如果还有错误的话,就会是下面这个错误,同样这个错误也不一定是百分百出现的。但是还是写出来比较好。
我在断点调试的时候发现的
{"事务失败。 服务器响应为:MI:SPB UserReject 0,smtp3,DdGowAA3378huFhYKwDsLg--.19311S2 1482209314,please feedback at http://feedback.mail.126.com/antispam/complain.php?user=lbj13796396303@163.com"}
就需要你去这个地址填写以下163邮箱的协议就好了。
http://feedback.mail.126.com/antispam/complain.php