C#发送邮件失败命令顺序不正确need EHLO and AUTH first解决方法

C#使用QQ邮箱发送邮件,同样的程序,以前正常运行,今天运行失败,提示:

System.Net.Mail.SmtpException:“命令顺序不正确。 服务器响应为:Error: need EHLO and AUTH first !”



这是由于QQ邮箱增强了安全机制,在第三方登录QQ邮箱时只能使用专用的密码,此密码称为授权码,授权码不支持自行设置,使用时到QQ邮箱自行申请。

C#发送邮件失败命令顺序不正确need EHLO and AUTH first解决方法

登录QQ邮箱,打开"设置>帐户",确保已开启POP3/SMTP服务,生成授权码:







然后修改发送邮件程序:

//using System.Net;
//using System.Net.Mail;
//using System.Text;

//电子邮件
MailMessage mailMessage = new MailMessage();
mailMessage.From = new MailAddress("111111@qq.com", "张三");//发件人
mailMessage.To.Add(new MailAddress("222222@qq.com", "李四"));//收件人
mailMessage.CC.Add(new MailAddress("333333@qq.com", "王五"));//抄送人
mailMessage.Priority = MailPriority.Normal;//优先级
mailMessage.SubjectEncoding = Encoding.UTF8;
mailMessage.Subject = "Happy New Year!";//标题
mailMessage.BodyEncoding = Encoding.UTF8;
mailMessage.IsBodyHtml = true;
mailMessage.Body = "<font color=red>Hello,Happy New Year!</font>";//内容
mailMessage.Attachments.Add(new Attachment(@"F:\mzwucom.jpg"));//附件

//邮件服务器
SmtpClient smtpClient = new SmtpClient();
smtpClient.Host = "smtp.qq.com";
smtpClient.EnableSsl = true;
smtpClient.UseDefaultCredentials = false;

smtpClient.Credentials = new NetworkCredential("用户名", "nsatogkujrazbiac");  //这边用授权码,不能使用用户密码
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.Send(mailMessage);

相关资料

[1].什么是授权码,它又是如何设置:https://service.mail.qq.com/cgi-bin/help?subtype=1&id=28&no=1001256

评论: 0 | 引用: 0 | 查看次数: 6861
发表评论
登录后再发表评论!