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邮箱问题分享到此结束,若有不足之处,欢迎你们留言讨论! 博客

相关文章
相关标签/搜索