相信发送邮件通知大伙都遇到过,大部分邮箱收取别人发的邮件都没什么问题,少部分会出现发不出或收不到等问题;比如qq邮箱,你使用126或者雅虎等其他邮件服务器发送邮件给qq普通到方法行不通,要么说没有权限发不出,要么你发出去了他没收到。
我在网上也找了很久大部分人说是要设置qq邮箱的POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务生成授权码,其实他们说的并不是这个问题。我们这说的问题是,即使你设置了授权码qq邮件还是发布出去,这是要干嘛咯,请看下面的代码:
/// <summary> /// 发送邮件 /// </summary> /// <param name="mailTo">要发送的邮箱</param> /// <param name="mailSubject">邮箱主题</param> /// <param name="mailContent">邮箱内容</param> /// <returns>返回发送邮箱的结果</returns> public static bool SendEmailMethod(string mailTo, string mailContent, string Name, string mailSubject) { bool isSuccess = false; try { if (string.IsNullOrEmpty(mailTo)) { string remarklog1 = string.Concat("由于没有有效的邮箱地址导致用户", Name, "有一封主题为:", mailSubject, "。内容为:", mailContent, "的邮件发送失败,原因:Email不能为空"); throw new Exception(remarklog1); } else { if (!Comm.IsEmail(mailTo)) { string remarklog1 = string.Concat("由于没有有效的邮箱地址导致用户", Name, "有一封主题为:", mailSubject, "。内容为:", mailContent, "的邮件发送失败,原因:Eamil=", mailTo, "必须是有效格式的邮件地址"); throw new Exception(remarklog1); } } // 设置发送方的邮件信息,例如使用网易的smtp string mailFrom = ConfigurationManager.AppSettings["mailFrom"]; //登陆用户名 System.Net.Mail.MailAddress from = new System.Net.Mail.MailAddress(mailFrom);//邮件发送人地址 System.Net.Mail.MailAddress to = new System.Net.Mail.MailAddress(mailTo);//收件人地址 System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage(from, to);//邮件对象 mailMessage.Subject = mailSubject; mailMessage.Body = mailContent; mailMessage.SubjectEncoding = Encoding.UTF8;//正文编码 mailMessage.BodyEncoding = Encoding.UTF8;//正文编码 mailMessage.IsBodyHtml = true;//设置为HTML格式 mailMessage.Priority = MailPriority.Low;//优先级 System.Net.Mail.SmtpClient mySmth = new System.Net.Mail.SmtpClient();//设置服务器 mySmth.Send(mailMessage);//发送邮件 mailMessage.Dispose(); isSuccess = true; } catch (Exception ex) { isSuccess = false; } return isSuccess; }
注意:还要配置web.config,在appSetting节点下,代码如下:
<configuration> <appSettings> <!--邮件配置信息--> <add key="mailsmtpServer" value="smtp.xxx.com.cn" /> <add key="mailFrom" value="postmaster@xxx.com.cn" /> <add key="mailPassword" value="发件邮箱密码" /> <!--/邮件配置信息--> </appSettings>
<system.net>
<mailSettings>
<smtp from="Emailname">
<network host="smtp.yunanfang.com.cn" userName="postmaster@xxx.com.cn" password="发件邮箱密码" port="25" defaultCredentials="false"/>
</smtp>
</mailSettings>
</system.net>
</configuration>
其中system.net为必须配置,需要特别注意。
然后就可以调用方法:
SendEmailMethod("281746212@qq.com", "金典台词:‘广东翻戏党啦’", "收件人姓名", "邮件主题");
代码经测试无误!
若有不对敬请留言指正!!!