1. 程式人生 > >使用QQ企業郵箱465埠傳送郵件失敗

使用QQ企業郵箱465埠傳送郵件失敗

採用以下程式碼

System.Web.Mail.MailMessage mail = new System.Web.Mail.MailMessage(,2);
try
{
mail.To = "收件人郵箱";
mail.From = "發件人郵箱";
mail.Subject = "subject";
mail.BodyFormat = System.Web.Mail.MailFormat.Html;
mail.Body = "<font color='red'>body</font>";

mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); //basic authentication
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "發件人郵箱"); //set your username here
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "發件人郵箱密碼"); //set your password here
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", 465);//set port
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");//set is ssl
System.Web.Mail.SmtpMail.SmtpServer = "smtp.qq.com";
System.Web.Mail.SmtpMail.Send(mail,2);
//return true;
}
catch (Exception ex)
{
ex.ToString(,2);
}


以下內容轉於
2014-05-10 10:12:38  3994瀏覽

我採用了.net 的自帶元件 System.Web.Mail.MailMessage傳送郵件,主要是在客戶註冊網站成功的時候發條歡迎郵件,最近郵件無法傳送了,看了下騰訊smtp郵件配置,所有的郵件傳送都換成ssl了,之前用的是25埠,現在換成了465或587,於是修改程式碼如下:

MailMessage msgMail = new MailMessage("發件箱", "收件箱", "郵件標題", "郵件內容",2);
SmtpClient smtp = new SmtpClient("smtp.qq.com", 465,2);
smtp.EnableSsl = true;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.Credentials = new System.Net.NetworkCredential("發件箱", "發件箱登入密碼",2);
try
{
smtp.Send(msgMail,2);
}
catch (Exception ex)
{
Console.WriteLine("傳送完畢......",2);
}

這樣還是不行,報操作已超時錯誤在國外的技術網站上看到一句話System.Net.Mail支援Explicit SSL但是不支援Implicit SSL,然後查了下關於這兩個模式的資料,我按照我理解的說一下: 

Explicit SSL 發起於未加密的25,然後進行一個starttl握手,最終切換到加密的連線。

Implicit SSL 直接從指定的埠發起starttl握手。 

既然指定了埠,那麼應該就是使用了Implicit SSL,不知道微軟什麼時候能更新下System.net.mail,System.net.mail能在郵件中嵌入圖片的。問題到了這裡,那是不是就沒有辦法利用騰訊郵箱發郵件了呢?答案肯定是否定的,foxmail不就可以配置傳送郵件嗎?我們可以利用CDO.Message和System.web.mail傳送郵件。

詳見我下面的2篇文章:

http://www.codingwhy.com/view/614.html

http://www.codingwhy.com/view/616.html

http://www.codingwhy.com/view/611.html