今天在弄企業郵箱推送的東西,原版代碼是這樣的
public void SendEmail(string title, string content) { try { MailMessage mailMsg = new MailMessage(); mailMsg.To.Add(new MailAddress(ToEmails)); mailMsg.From = new MailAddress(FromEmail); // 郵件主題 mailMsg.Subject = title; // 郵件正文內容 mailMsg.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(content, null, MediaTypeNames.Text.Html)); // 添加附件 //string file = "D:\\1.txt"; //Attachment data = new Attachment(file, MediaTypeNames.Application.Octet); //mailMsg.Attachments.Add(data); //郵件推送的SMTP地址和端口 SmtpClient smtpClient = new SmtpClient(EmailHost, EmailPort); //SmtpClient smtpClient = new SmtpClient(EmailHost); // 使用SMTP用戶名和密碼進行驗證 System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(FromEmail, FromEmailPW); smtpClient.EnableSsl = true; //smtpClient.Timeout = 10000;//超時 smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; smtpClient.UseDefaultCredentials = false; smtpClient.Credentials = credentials; smtpClient.Send(mailMsg); } catch (Exception ex) { throw; } }
按照騰訊企業郵箱給的文檔,我設置好郵箱賬號、密碼、smtp服務器、端口號之后開始測試,發現總是報錯,當時騰訊企業郵箱的官方提示是這樣的
可以看到,這里給的端口號是465,(這里不知道要不要罵娘了)
然后我斷斷續續的測試了一下午,發現怎么都發不出郵件,按理不會啊,就這么幾行代碼的事情,於是我試着刪除一些配置,讓程序按照自己的默認值來運行,於是我刪除了端口號的配置,代碼如下:
/// <summary> /// /// </summary> /// <param name="UserName"></param> /// <param name="Money"></param> public void SendEmail(string title, string content) { try { MailMessage mailMsg = new MailMessage(); mailMsg.To.Add(new MailAddress(ToEmails)); mailMsg.From = new MailAddress(FromEmail); // 郵件主題 mailMsg.Subject = title; // 郵件正文內容 mailMsg.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(content, null, MediaTypeNames.Text.Html)); // 添加附件 //string file = "D:\\1.txt"; //Attachment data = new Attachment(file, MediaTypeNames.Application.Octet); //mailMsg.Attachments.Add(data); //郵件推送的SMTP地址和端口 //SmtpClient smtpClient = new SmtpClient(EmailHost, EmailPort); SmtpClient smtpClient = new SmtpClient(EmailHost); // 使用SMTP用戶名和密碼進行驗證 System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(FromEmail, FromEmailPW); smtpClient.EnableSsl = true; //smtpClient.Timeout = 10000;//超時 smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; smtpClient.UseDefaultCredentials = false; smtpClient.Credentials = credentials; smtpClient.Send(mailMsg); } catch (Exception ex) { throw; } }
結果就發出去了,我是真的日了狗,郵件發送失敗的提示的提示也沒有具體信息,先記錄一下,以后使用這些企業郵箱實現郵件推送,最好不要用他們提供的端口號,感覺只需要有發信服務器就行了。