騰訊企業郵箱使用SSL時,原來的郵件發送程序一直提示參數錯誤
SmtpClient _smtpClient = new SmtpClient(); _smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定電子郵件發送方式 _smtpClient.Host = host; ;//指定SMTP服務器 _smtpClient.Credentials = new System.Net.NetworkCredential(email, pwd);//用戶名和密碼 _smtpClient.Port = 465;//使用的端口 _smtpClient.EnableSsl = true;//經過ssl加密
端口與使用SSL都是配制正確的,但是一直發送不出去
找到以下資料 地址:http://www.ie81.com/Technology/225.html
這樣還是不行,報操作已超時錯誤 在國外的技術網站上看到一句話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發送郵件。
C#利用System.web.mail發送郵件
System.Web.Mail.MailMessage mail = new System.Web.Mail.MailMessage(); try { mail.To = "收件人郵箱"; mail.From = "發件人郵箱"; mail.Subject = "subject"; mail.BodyFormat = System.Web.Mail.MailFormat.Html; mail.Body = "body"; 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.exmail.qq.com"; System.Web.Mail.SmtpMail.Send(mail); //return true; } catch (Exception ex) { ex.ToString(); }
通過以上的方法,就可以正常調用騰訊企業郵箱進行郵件發送了