這篇文章的目的並不是說明如果進行右鍵的發送,因為在.net 壩壩的懷抱下郵件發送的功能實現並不會很難,當然郵件發送的代碼,還是會貼上的,昨天在寫一個郵件發送的功能,我直接找到了原來的代碼,想着直接就可以運行了,但是真正情況並非如此,遇到了很多報錯,這里做個說明。
測試中出現了如下的報錯:
163
1.不允許使用郵箱名稱。 服務器響應為:authentication is required,163 smtp14,EsCowACHqdDTBdBay0PiEw--.39304S3 1523582420
2.郵箱不可用。 服務器響應為:User has no permission
3.事務失敗。 服務器響應為:DT:SPM 163 smtp13,EcCowAAHf28_ENBawarsDQ--.43148S3 1523585089,please see http://mail.163.com/help/help_spam_16.htm?ip=xx.xx.xx.xx&hostid=smtp13&time=1523585089
QQ
通過QQ發郵件基本沒有什么大的問題,可以成功,當然這一切的大的問題都是由於現在的qq和163都開始使用授權碼,what? 什么意思了,意思就是原來通過郵箱帳號,密碼然后發送右鍵的方式用不了了,所以這也就是為什么我原先的代碼用不了。
如果開啟所謂的授權碼呢?
163:

163現在開啟POP3/SMTP服務的時候已經做了說明,如上“請使用授權碼登錄第三方右鍵客戶端”

如上開啟授權碼即可,請牢記自己的授權碼
QQ:

如上,qq的smtp服務開啟與獲取授權碼
下面開始貼發送的代碼:
public class EmalHelper { /// <summary> /// SMTP實例 /// </summary> static System.Net.Mail.SmtpClient client = null; /// <summary> /// 發送信息 /// </summary> /// <param name="Receiver">郵件接收人</param> /// <param name="Subject">郵件主題</param> /// <param name="content">郵件內容</param> public static void SendEmail(string Receiver, string Subject, string content) { if (string.IsNullOrEmpty(Receiver) || string.IsNullOrEmpty(Subject) || string.IsNullOrEmpty(content)) { throw new ArgumentNullException("SendEmail參數空異常!"); } if (client == null) { try { //163發送配置 client = new System.Net.Mail.SmtpClient(); client.Host = "smtp.163.com"; client.Port = 25; client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; client.EnableSsl = true; client.UseDefaultCredentials = true; //qq發送配置的參數//切EnableSsl必須設置為true //client = new System.Net.Mail.SmtpClient(); //client.Host = "smtp.qq.com"; //client.Port = 25; //client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; //client.EnableSsl = true; //client.UseDefaultCredentials = false; client.Credentials = new System.Net.NetworkCredential("郵箱帳號@xx.com", "授權碼"); } catch (Exception ex) { throw ex; } } try { System.Net.Mail.MailMessage Message = new System.Net.Mail.MailMessage(); Message.SubjectEncoding = System.Text.Encoding.UTF8; Message.BodyEncoding = System.Text.Encoding.UTF8; Message.Priority = System.Net.Mail.MailPriority.High; Message.From = new System.Net.Mail.MailAddress("郵箱帳號@xx.com", "張三"); //添加郵件接收人地址 string[] receivers = Receiver.Split(new char[] { ',' }); Array.ForEach(receivers.ToArray(), ToMail => { Message.To.Add(ToMail); }); Message.Subject = Subject; Message.Body = content; Message.IsBodyHtml = true; client.Send(Message); } catch (Exception ex) { throw ex; } } }
上面的郵箱帳號正常輸入,后面必須填寫授權碼,否則就會提示, 不允許使用郵箱名稱。 服務器響應為:authentication is required,163 smtp13,EcCowACXmXrVFtBa20jvDQ--.25857S3 1523586773
如果用戶沒有開啟授權碼,還是原先的用戶密碼的方式,郵箱不可用。 服務器響應為:User has no permission
服務器響應為:DT:SPM 163 smtp13,EcCowAAHf28_ENBawarsDQ--.43148S3 1523585089,please see http://mail.163.com/help/help_spam_16.htm?ip=xx.xx.xx.xx&hostid=smtp13&time=1523585089 這是第三個錯誤,因為郵件被攔截導致,你的右鍵標題和內容要正規,我做了個測試 右鍵的標題為 “title” 報錯,改為“工作匯報”,郵件發送成功,而且這個錯誤還跟天氣有關,開個玩笑,有時候就是莫名其妙的出現,一會就好了
