C# 使用QQ郵箱發送郵件


發送原理,把郵件發送給smtp服務器,然后再由smtp服務器發送到郵箱。

1、微軟已經幫我們封裝好了發送郵件的類 MailMessage。MailMessage類構造一些郵件信息,然后通過SmtpClient進行郵件發送。

2、還需要用到SmtpClient類進行發送郵件。SmtpClient類的意思是:允許應用程序使用簡單郵件傳輸協議 (SMTP) 來發送電子郵件。

3、代碼

  

static void Main(string[] args)
        {
            //實例化一個發送郵件類。
            MailMessage mailMessage = new MailMessage();
            //發件人郵箱地址,方法重載不同,可以根據需求自行選擇。
            mailMessage.From = new MailAddress("123456@qq.com");
            //收件人郵箱地址。
            mailMessage.To.Add(new MailAddress("234567@qq.com"));
            //抄送人郵箱地址。
            //message.CC.Add(sender);
            //郵件標題。
            mailMessage.Subject = "發送郵件測試";
            //郵件內容。
            mailMessage.Body = "這是我給你發送的第一份郵件哦!";
            //是否支持內容為HTML。
            //mailMessage.IsBodyHtml = true;
            //實例化一個SmtpClient類。
            SmtpClient client = new SmtpClient();
            client.Port = 587;
            //在這里使用的是qq郵箱,所以是smtp.qq.com,如果你使用的是126郵箱,那么就是smtp.126.com。
            //client.Host = "smtp.163.com";
            client.Host = "smtp.qq.com";
            //使用安全加密連接(是否啟用SSL)
            client.EnableSsl = true;
            //設置超時時間
            //client.Timeout = 10000;
            //不和請求一塊發送。
            client.UseDefaultCredentials = false;
            //驗證發件人身份(發件人的郵箱,郵箱里的生成授權碼);
            client.Credentials = new NetworkCredential("123456@qq.com", "你自己的qq郵箱授權碼");//szcodirtgvjgbfii
            //網易郵箱客戶端授權碼DJURBEKTXEWXQATX
            //client.Credentials = new NetworkCredential("liulijun3236@163.com", "ZAJDNCKWHUBHQIMY");
            try
            {
                //發送
                client.Send(mailMessage);
                //發送成功
            }
            catch (Exception)//發送異常
            {
                //發送失敗
                //System.IO.File.WriteAllText(@"C:\test.txt", e.ToString(), Encoding.UTF8);
            }
        }

 

4、常見錯誤信息及解決辦法。

  在做此功能的過程中,遇到過好幾個異常信息,到最后百度了一下,總算解決了,有些新人在做的過程中,或許不知道問題出在哪了,接下來我就說說我常見的錯誤及解決辦法。

  4.1、mail from address must be same as authorization user

    一般出這種情況的原因有兩種:

    4.1.1、POP3/IMAP/SMTP未開啟。

        解決辦法:進入qq郵箱- - - - -》設置- - - - -》賬戶- - - - -》然后找到POP3/IMAP/SMTP開啟即可。

     4.1.2、授權碼錯誤。

        解決辦法:進入qq郵箱- - - - -》設置- - - - -》賬戶- - - - -》然后找到POP3/IMAP/SMTP開POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務下的生成授權碼填上即可。

  4.2、Error: need EHLO and AUTH first !

     一般情況系出現這種錯誤原因是SmtpClient類的EnableSsl、UseDefaultCredentials屬性放到了Credentials屬性之下。

     解決辦法:將SmtpClient類的EnableSsl、UseDefaultCredentials屬性放到了Credentials屬性之上。

 

 5、看看騰訊的官方設置說明,使用SSL,端口號465,但是如果按配置,總是提示超時。沒辦法,google了一把,發現端口號應該是587

6、端口內容詳細看鏈接  https://stackoverflow.com/questions/15796530/what-is-the-difference-between-ports-465-and-587


免責聲明!

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



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