C#使用SMTP协议发送验证码到QQ邮箱

在程序设计中,发送验证码是常见的一个功能,用户在注册账号时或忘记密码后,通常需要发送验证码到手机短信或邮箱来验证身份,此篇博客介绍在C#中如何使用SMTP协议发送验证码到QQ邮箱

SMTP协议

SMTP 的全称是"Simple Mail Transfer Protocol",即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。
发送原理:将验证码邮件发送给smtp服务器,然后再由smtp服务器发送到目标邮箱,发送之前需校验发送人身份,避免产生大量垃圾邮件

实现步骤

1、开启POP3/SMTP服务

进入发送人qq邮箱→→设置→→账户→→开启POP3/SMTP服务

在开启POP3/SMTP服务时,会生成一个授权码,保存授权码,在验证发送人身份时需填入授权码。

2、添加发送邮件方法

 /// <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服务器地址
SmtpClient _smtpClient = new SmtpClient();
_smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定电子邮件发送方式
_smtpClient.Host = smtp; //指定SMTP服务器
_smtpClient.Credentials = new System.Net.NetworkCredential("发件人地址", "授权码");//设置用于验证发件人身份的凭据
MailMessage _mailMessage = new MailMessage();
//发件人,发件人名
_mailMessage.From = new MailAddress("发件人地址", "发件人名称");
//收件人
_mailMessage.To.Add(email);
19 _mailMessage.SubjectEncoding = System.Text.Encoding.GetEncoding("gb2312");//标题编码
_mailMessage.Subject = content;//邮件主题
_mailMessage.Body = "验证码" + body + "用于" + content + ",请勿向任何人提供验证码!";//邮件内容
_mailMessage.BodyEncoding = System.Text.Encoding.GetEncoding("gb2312");//正文编码
23 _mailMessage.IsBodyHtml = true;//设置为HTML格式
_mailMessage.Priority = MailPriority.High;//优先级
try
{
27 _smtpClient.Send(_mailMessage);//发送邮件
}
catch (Exception ex)
{
throw;
}
33 }

使用 SmtpClient 类和 MailMessage 类需引入 System.Net.Mail 命令空间

MailMessage类:

From:发送邮件的地址
To:接收邮件的地址
Subject:邮件的标题
Priority:邮件的优先级(分别为为High,Low,Normal)
Attachments:电子邮件的数据的附件集合
Bcc:密送地址
Cc:抄送地址
Body:邮件正文
SubjectEncoding:电子邮件的主题内容使用的编码
IsBodyHtml:邮件正文是否为 Html 格式的值

SmtpClient类:

DeliveryMethod:指定如何处理待发的电子邮件
Host:SMTP 事务的主机的名称或 IP 地址
Credentials:设置用于验证发件人身份的凭据

3、调用Sends()方法

略~

4、附上生成随机验证码代码

 public string createCode()
2 {
3 string code = "";
//所有候选组成验证码的字符
char[] codeChars = new char[] {
'', '', '', '', '', '', '', '', '', '',
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
Random random = new Random(~unchecked((int)DateTime.Now.Ticks));
for (int i = ; i < ; i++)
{
int rnd = random.Next(, );
code += codeChars[rnd];
}
return code;
}

关于C#使用SMTP协议发送验证码到QQ邮箱问题分享到此结束,如有不足之处,欢迎大家留言讨论!

C#使用SMTP协议发送验证码到QQ邮箱的更多相关文章

  1. C# WinForm 使用SMTP协议发送QQ邮箱验证码

    文章来自:https://blog.csdn.net/IT_xiao_guang_guang/article/details/104336604 前言   在程序设计中,发送验证码是常见的一个功能,用 ...

  2. 用CBrother脚本实现smtp协议发送一份邮件

    用CBrother脚本实现smtp协议发送一份邮件 之前用CBrother脚本写了一个拯救“小霸王服务器”的程序,公司人用着都挺好用,但是有时候谁重启了服务器其他人不知道,造成了多人多次重启,每个人都 ...

  3. java代码发送邮箱验证码与qq邮箱smtp服务

    发送邮箱的类封装,在此之前需要一个jar包  javax.mail.jar 下载链接https://github.com/javaee/javamail/releases/download/JAVAM ...

  4. python3:利用SMTP协议发送QQ邮件+附件

    转载请表明出处:https://www.cnblogs.com/shapeL/p/9115887.html 1.发送QQ邮件,首先必须知道QQ邮箱的SMTP服务器 http://service.mai ...

  5. JavaMail使用SMTP协议发送电子邮件(详解)

    Properties props = new Properties(); props.setProperty("mail.transport.protocol", "sm ...

  6. SMTP协议解读以及如何使用SMTP协议发送电子邮件

    电子邮件协议中POP3协议用于接收邮件,SMTP协议用于发送邮件.SMTP的全称为Simple Mail Transfer Protocol,也就是简单邮件传输协议,字如其名.   相较于POP3而言 ...

  7. 使用python发送163邮件 qq邮箱

    使用python发送163邮件 def send_email(title, content): import smtplib from email.mime.multipart import MIME ...

  8. C#QQ邮箱验证

    注意: QQ邮箱的简单邮件传输协议(SMTP)使用了SSL加密,必须启用SSL加密.指定端口. QQ邮箱POP3/SMTP服务默认是关闭的,需要开启服务(设置=>账户=>开启服务). QQ ...

  9. TP5实现邮件发送(PHP 利用QQ邮箱发送邮件「PHPMailer」)

    在 PHP 应用开发中,往往需要验证用户邮箱.发送消息通知,而使用 PHP 内置的 mail() 函数,则需要邮件系统的支持. 如果熟悉 IMAP/SMTP 协议,结合 Socket 功能就可以编写邮 ...

随机推荐

  1. nginx 其他配置语法

    1.nginx 缓冲区配置 2.跳转重定向 3.头信息 4.超时 location / { proxy_pass http://127.0.0.1:8080;(代理跳转url) proxy_redir ...

  2. index获取子DOM对象在父DOM对象的内位置索引值

    <script type="text/javascript">    $(function(){        var $p1=$('#id1 p:visible'); ...

  3. LIST OF BEST OPEN SOURCE BLOCKCHAIN PLATFORMS

    https://www.blockchain-council.org/blockchain/list-of-best-open-source-blockchain-platforms/ Open so ...

  4. USACO Clumsy Cows

    洛谷 P3056 [USACO12NOV]笨牛Clumsy Cows 洛谷传送门 JDOJ 2323: USACO 2012 Nov Silver 1.Clumsy Cows JDOJ传送门 Desc ...

  5. Spring Boot 各版本的Java版本要求

    Spring Boot 各版本的Java版本要求 Spring Boot 与 Java 对应版本,以下表格由官方网站总结. 官网:https://spring.io/projects/spring-b ...

  6. html-前端内容初识

    HTML解释: HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的规则(W3C),大家都来遵守他,这 ...

  7. java 多态调用

    1. 调用成员变量:编译.运行都看左边.2. 调用成员方法:编译看左边,运行看右边.  ----------  instanceof 判断某个对象是否属于某种数据类型: boolean  b  = 对 ...

  8. three.js 添加三维坐标系

    //显示三维坐标系 ); scene.add(axis);

  9. ESA2GJK1DH1K基础篇: 阿里云物联网平台: 测试云平台显示MQTT客户端发过来的消息

    现在这里空空如也 咱自定义的也没有数据 现在就是传上来温度数据,让这里显示温度数据 你发布的主题  /sys/a1m7er1nJbQ/Mqtt/thing/event/property/post 发布 ...

  10. Python错误“ImportError: No module named MySQLdb”解决方法

    这个错误可能是因为没有安装MySQL模块,这种情况下执行如下语句安装: pip install MySQLdb 如果安装时遇到错误“_mysql.c:29:20: 致命错误:Python.h:没有那个 ...