错误说明
使用587
报 服务器要求安全连接或客户端未通过身份验证。 服务器响应为:Must issue a STARTTLS command first.! 设置 client.EnableSsl = true; 报 邮箱不可用。 服务器响应为:Mailbox not found or access denied!腾讯官方解释https://service.exmail.qq.com/cgi-bin/help?subtype=1&id=20022&no=1000742
出错原因:您要发送的收件人短时间内收到大量邮件,为避免受到恶意攻击,暂时禁止向该收件人发信。 改善建议:暂停向该收件人发信,稍后重新尝试。 换了个email测试通过,(被这个错误一度坑了好久......)使用25
设置 client.EnableSsl = false;
////// 没有gmail邮箱 /// /// /// /// ///public static string SendMailUseGmail(string email,string data,string title) { System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(); msg.To.Add(email); msg.CC.Add(email); /* * msg.To.Add("b@b.com"); * msg.To.Add("b@b.com"); * msg.To.Add("b@b.com");可以发送给多人 */ /* * msg.CC.Add("c@c.com"); * msg.CC.Add("c@c.com");可以抄送给多人 */ msg.From = new MailAddress(getRandKey(3) + "@" + getRandKey(3) + ".com", "管理员", System.Text.Encoding.UTF8); /* 上面3个参数分别是发件人地址(可以随便写),发件人姓名,编码*/ msg.Subject = title;//邮件标题 msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码 msg.Body = data; //内容 msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码 msg.IsBodyHtml = false;//是否是HTML邮件 msg.Priority = MailPriority.High;//邮件优先级 SmtpClient client = new SmtpClient(); client.Credentials = new System.Net.NetworkCredential("285****789@gmail.com", "prdrjdpfivphdfid"); //上述写你的GMail邮箱和密码 client.Port = 587;//Gmail使用的端口 client.Host = "smtp.gmail.com"; client.EnableSsl = true;//经过ssl加密 client.UseDefaultCredentials = false; //object userState = msg; StringBuilder sb_result = new StringBuilder(); try { //client.SendAsync(msg, userState); //简单一点儿可以 client.Send(msg); sb_result.Append("发送成功"); } catch (System.Net.Mail.SmtpException ex) { sb_result.Append("发送失败" + ex); } return sb_result.ToString(); } /// /// 163邮箱发送失败 /// /// /// /// ///public static string SendMailUse163(string email, string data, string title) { string Host = "smtp.163.com";//指定SMTP服务器主机 int Port = 587; SmtpClient client = new SmtpClient(Host,Port);//生成SmtpClient实例,用它发送电子邮件 client.UseDefaultCredentials = true; //是否需要身份验证 string username = "sendemail001@163.com"; string pwd = "hl123456789"; client.Credentials = new System.Net.NetworkCredential(username, pwd);//发件人邮箱的用户和密码.中的密码更改为授权码号 client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; client.EnableSsl = true; MailMessage message = new MailMessage(); MailAddress fromAddr = new System.Net.Mail.MailAddress("se*****001@163.com", "管理员"); message.From = fromAddr; message.To.Add(email); //Attachment attach = new Attachment(@"附件存放地址");//获取选择的附件 //Attachment attach1 = new Attachment(@"附件存放地址"); //message.Attachments.Add(attach);//将附件添加到邮件中,MailMessage类的Attachments属性可以Add多个附件 //message.Attachments.Add(attach1); message.Subject = title; //获取输入的邮件标题 message.SubjectEncoding = Encoding.UTF8; message.Body = data; //"可以设置成html页面的形式"; message.BodyEncoding = Encoding.UTF8; message.Priority = MailPriority.High; message.IsBodyHtml = true; //想要显示Html页面形式必须设置 StringBuilder sb_result = new StringBuilder(); try { client.Send(message); //client.Send("sendemail001@163.com", email, title, data); client.ServicePoint.CloseConnectionGroup(client.ServicePoint.ConnectionName); //简单一点儿可以client.Send(msg); sb_result.Append("发送成功"); } catch (System.Net.Mail.SmtpException ex) { sb_result.Append("发送失败" + ex); } return sb_result.ToString(); } private static string getRandKey(int count) { string key = string.Empty; string[] jh = new string[] { "a", "b", "c", "c", "d", "e", "f", "g", "h", "i", "j", "k" ,"l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K" ,"L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}; Random ra = new Random(Guid.NewGuid().GetHashCode()); for (int i = 0; i < count; i++) { key = key + jh[ra.Next(jh.Length)]; } return key; } /// /// 最后qq邮箱可以了 /// /// /// /// ///public static string SendEmailQQ(string email, string data, string title) { string res = ""; try { MailMessage msg = new MailMessage(); msg.To.Add(email);//收件人地址 //msg.To.Add("to@qq.com");//收件人地址 //msg.CC.Add("cc@qq.com");//抄送人地址 msg.From = new MailAddress("2851237789@qq.com", "管理员");//发件人邮箱,名称 msg.Subject = title; msg.SubjectEncoding = Encoding.UTF8; msg.Body = data; msg.BodyEncoding = Encoding.UTF8; msg.IsBodyHtml = true; SmtpClient client = new SmtpClient(); client.Host = "smtp.qq.com";//SMTP服务器地址 client.Port = 587;//SMTP端口,QQ邮箱填写587 client.EnableSsl = true;//启用SSL加密 client.Credentials = new NetworkCredential("285******9@qq.com", "dgm*******dcge");//发件人邮箱账号,授权密码 client.Send(msg);//发送邮件 res = ("发送成功!"); } catch (Exception ex) { res = (ex.Message); } return res; }
格式都差不多,就是需要注意参数的设置。