zoukankan      html  css  js  c++  java
  • C#使用SMTP协议发送验证码到QQ邮箱

    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、添加发送邮件方法

     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 命令空间

    MailMessage类:

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

    SmtpClient类:

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

    3、调用Sends()方法

    略~

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

     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邮箱问题分享到此结束,如有不足之处,欢迎大家留言讨论! 

  • 相关阅读:
    命令实现linux和客户端文件上传下载
    python--linux上如何执行shell命令
    Eureka系列(一)Eureka功能介绍
    Eureka系列(七) 服务下线Server端具体实现
    编译时多态 与 运行时多态
    静态绑定(前期绑定) 与 动态绑定(后期绑定)
    重载 与 重写
    热点检测、方法内联、动态反优化
    数据库日志
    单例模式
  • 原文地址:https://www.cnblogs.com/gygg/p/11328667.html
Copyright © 2011-2022 走看看