1、关于QQ邮箱“命令顺序不正确。 服务器响应为:Error: need EHLO and AUTH first !”问题
1、登录QQ邮箱——设置——开启“POP3/SMTP服务”
2、获取“授权码”
刚开始一直使用邮箱的密码。后面才发现,原来QQ邮箱通过第三方发送邮件应该使用授权码 o(≧口≦)o
附上腾讯的说明http://service.mail.qq.com/cgi-bin/help?subtype=1&&no=1001256&&id=28
3、编码
使用SmtpClient来解决
EnableSsl设置为true
UseDefaultCredentials设置为false
Credentials = new System.Net.NetworkCredential("QQ邮箱", "授权码"); 注意此处不是密码而是授权码;
附上代码,做个备忘
2、发送邮件
string fjrtxt = 发送人邮箱
string pwd = 密码
string sjrtxt = 接收人邮箱
string subjecttxt = 主题
string contenttxt =内容
string[] fasong = fjrtxt.Split('@');
string[] fs = fasong[1].Split('.');
//发送
SmtpClient client = new SmtpClient("smtp." + fs[0].ToString().Trim() + ".com"); //设置邮件协议
client.UseDefaultCredentials = false;//这一句得写前面
client.DeliveryMethod = SmtpDeliveryMethod.Network; //通过网络发送到Smtp服务器
client.Credentials = new NetworkCredential(fasong[0].ToString(), pwd); //通过用户名和密码 认证
MailMessage mmsg = new MailMessage(new MailAddress(fjrtxt), new MailAddress(sjrtxt)); //发件人和收件人的邮箱地址
mmsg.Subject = subjecttxt; //邮件主题
mmsg.SubjectEncoding = Encoding.UTF8; //主题编码
mmsg.Body = contenttxt; //邮件正文
mmsg.BodyEncoding = Encoding.UTF8; //正文编码
mmsg.IsBodyHtml = true; //设置为HTML格式
mmsg.Priority = MailPriority.High; //优先级
for (int i = 0; i < m_filePaths.Length; i++)
{
mmsg.Attachments.Add(new Attachment(m_filePaths[i]));//增加附件
}
try
{
client.Send(mmsg);
MessageBox.Show("邮件已发成功");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}