C#使用SMTP協議發送驗證碼到QQ郵箱

C#使用SMTP協議發送驗證碼到QQ郵箱

在程序設計中,發送驗證碼是常見的一個功能,用戶在註冊帳號時或忘記密碼後,一般須要發送驗證碼到手機短信或郵箱來驗證身份,此篇博客介紹在C#中如何使用SMTP協議發送驗證碼到QQ郵箱服務器

SMTP協議

SMTP 的全稱是"Simple Mail Transfer Protocol",即簡單郵件傳輸協議。它是一組用於從源地址到目的地址傳輸郵件的規範,經過它來控制郵件的中轉方式。SMTP 協議屬於 TCP/IP 協議簇,它幫助每臺計算機在發送或中轉信件時找到下一個目的地。SMTP 服務器就是遵循 SMTP 協議的發送郵件服務器。
發送原理:將驗證碼郵件發送給smtp服務器,而後再由smtp服務器發送到目標郵箱,發送以前需校驗發送人身份,避免產生大量垃圾郵件

實現步驟

一、開啓POP3/SMTP服務

進入發送人qq郵箱→→設置→→帳戶→→開啓POP3/SMTP服務dom

在開啓POP3/SMTP服務時,會生成一個受權碼,保存受權碼,在驗證發送人身份時需填入受權碼編碼

二、添加發送郵件方法

 1 /// <summary>
 2 /// 發送驗證碼
 3 /// </summary>
 4 /// <param name="email">收件人郵箱</param>
 5 /// <param name="content">郵件主題</param>
 6 /// <param name="body">郵件內容</param>
 7 public static void Sends(string email, string content, string body)
 8 {
 9     string smtp = "smtp.qq.com";//qq的SMTP服務器地址
10     SmtpClient _smtpClient = new SmtpClient();
11     _smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定電子郵件發送方式
12     _smtpClient.Host = smtp; //指定SMTP服務器
13     _smtpClient.Credentials = new System.Net.NetworkCredential("發件人地址", "受權碼");//設置用於驗證發件人身份的憑據
14     MailMessage _mailMessage = new MailMessage();
15     //發件人,發件人名 
16     _mailMessage.From = new MailAddress("發件人地址", "發件人名稱");
17     //收件人 
18     _mailMessage.To.Add(email);
19     _mailMessage.SubjectEncoding = System.Text.Encoding.GetEncoding("gb2312");//標題編碼
20     _mailMessage.Subject = content;//郵件主題
21     _mailMessage.Body = "驗證碼" + body + "用於" + content + ",請勿向任何人提供驗證碼!";//郵件內容
22     _mailMessage.BodyEncoding = System.Text.Encoding.GetEncoding("gb2312");//正文編碼
23     _mailMessage.IsBodyHtml = true;//設置爲HTML格式
24     _mailMessage.Priority = MailPriority.High;//優先級   
25     try
26     {
27         _smtpClient.Send(_mailMessage);//發送郵件
28     }
29     catch (Exception ex)
30     {
31         throw;
32     }
33 }

使用 SmtpClient 類和 MailMessage 類需引入 System.Net.Mail 命令空間spa

MailMessage類:設計

From:發送郵件的地址
To:接收郵件的地址
Subject:郵件的標題
Priority:郵件的優先級(分別爲爲High,Low,Normal)
Attachments:電子郵件的數據的附件集合
Bcc:密送地址
Cc:抄送地址
Body:郵件正文
SubjectEncoding:電子郵件的主題內容使用的編碼
IsBodyHtml:郵件正文是否爲 Html 格式的值code

SmtpClient類:orm

DeliveryMethod:指定如何處理待發的電子郵件
Host:SMTP 事務的主機的名稱或 IP 地址
Credentials:設置用於驗證發件人身份的憑據blog

三、調用Sends()方法

略~事務

四、附上生成隨機驗證碼代碼

 1 public string createCode()
 2 {
 3     string code = "";
 4     //全部候選組成驗證碼的字符
 5     char[] codeChars = new char[] {
 6         '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
 7         'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
 8         'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
 9         'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
10         'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
11     Random random = new Random(~unchecked((int)DateTime.Now.Ticks));
12     for (int i = 0; i < 4; i++)
13     {
14         int rnd = random.Next(0, 62);
15         code += codeChars[rnd];
16     }
17     return code;
18 }

關於C#使用SMTP協議發送驗證碼到QQ郵箱問題分享到此結束,若有不足之處,歡迎你們留言討論! 博客

相關文章
相關標籤/搜索