記一次郵件推送的坑,c#基於smtp使用騰訊企業郵箱發送郵件總是失敗的原因


今天在弄企業郵箱推送的東西,原版代碼是這樣的

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;
            }

        }

結果就發出去了,我是真的日了狗,郵件發送失敗的提示的提示也沒有具體信息,先記錄一下,以后使用這些企業郵箱實現郵件推送,最好不要用他們提供的端口號,感覺只需要有發信服務器就行了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM