點擊進入推薦鏈接
最近在做一個通過點擊忘記密碼往用戶郵箱中發郵件(郵件內容是一個超鏈接)點擊進行修改的功能,發送原理,我們只是把郵件發送給smtp服務器,然后再由smtp服務器發送到郵箱,發送之前要校驗一下。
1、微軟已經幫我們封裝好了發送郵件的類 MailMessage,MailMessage類構造一些郵件信息,然后通過SmtpClient進行郵件發送。MailMessage常用的一些屬性有:
1.1、From:發件人郵箱地址。
1.2、To:收件人的郵箱地址。
1.3、Subject:郵件標題。
1.4、Body:郵件內容。
2、還需要用到SmtpClient類進行發送郵件。SmtpClient類的意思是:允許應用程序使用簡單郵件傳輸協議 (SMTP) 來發送電子郵件。SmtpClient類常用的一些屬性和方法:
2.1、Host: 獲取或設置用於 SMTP 事務的主機的名稱或 IP 地址。
2.2、EnableSsl:是否使用安全套接字層加密連接。
2.3、UseDefaultCredentials:是否隨請求一起發送。
2.4、Credentials:獲取或設置用於驗證發件人身份的憑證。
2.5、Send():發送。
3、上代碼。
1 protected void Page_Load(object sender, EventArgs e) 2 { 3 //實例化一個發送郵件類。 4 MailMessage mailMessage = new MailMessage(); 5 //發件人郵箱地址,方法重載不同,可以根據需求自行選擇。 6 mailMessage.From = new MailAddress("123456@qq.com"); 7 //收件人郵箱地址。 8 mailMessage.To.Add(new MailAddress("654321@qq.com")); 9 //郵件標題。 10 mailMessage.Subject = "發送郵件測試"; 11 //郵件內容。 12 mailMessage.Body = "這是我給你發送的第一份郵件哦!"; 13 14 //實例化一個SmtpClient類。 15 SmtpClient client = new SmtpClient(); 16 //在這里我使用的是qq郵箱,所以是smtp.qq.com,如果你使用的是126郵箱,那么就是smtp.126.com。 17 client.Host = "smtp.qq.com"; 18 //使用安全加密連接。 19 client.EnableSsl = true; 20 //不和請求一塊發送。 21 client.UseDefaultCredentials = false ; 22 //驗證發件人身份(發件人的郵箱,郵箱里的生成授權碼); 23 client.Credentials = new NetworkCredential("123456@qq.com", "fnsedjxib"); 24 //發送 25 client.Send(mailMessage); 26 Context.Response.Write("發送成功"); 27 }
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、然后根據自己構建的鏈接就可以找回密碼了。
End。