错误说明
使用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;
/// <summary>
/// 没有gmail邮箱
/// </summary>
/// <param name="email"></param>
/// <param name="data"></param>
/// <param name="title"></param>
/// <returns></returns>
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();
}
/// <summary>
/// 163邮箱发送失败
/// </summary>
/// <param name="email"></param>
/// <param name="data"></param>
/// <param name="title"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 最后qq邮箱可以了
/// </summary>
/// <param name="email"></param>
/// <param name="data"></param>
/// <param name="title"></param>
/// <returns></returns>
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;
}
格式都差不多,就是需要注意参数的设置。