加入收藏 | 设为首页 | 会员中心 | 我要投稿 百客网 - 域百科网 (https://www.yubaike.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

ASP.NET实现邮箱发送验证码

发布时间:2022-11-23 12:57:17 所属栏目:Asp教程 来源:
导读:  *ASP.NET实现邮箱发送验证码

  一:先在前台添加一个button按钮,用来点击发送验证码

  二:封装一个类实现邮箱发送验证码

  public class Email

  {

  ///

  /// 发送者
  *ASP.NET实现邮箱发送验证码
 
  一:先在前台添加一个button按钮,用来点击发送验证码
 
  二:封装一个类实现邮箱发送验证码
 
  public class Email
 
  {
 
  ///
 
  /// 发送者
 
  ///
 
  public string mailFrom { get; set; }
 
      ///
 
      /// 收件人
      ///
 
      public string[] mailToArray { get; set; }
      ///
 
      /// 抄送
      ///
 
      public string[] mailCcArray { get; set; }
      ///
 
      /// 标题
      ///
 
      public string mailSubject { get; set; }
      ///
 
      /// 正文
      ///
 
      public string mailBody { get; set; }
      ///
 
      /// 发件人密码
      ///
 
      public string mailPwd { get; set; }
      ///
 
      /// SMTP邮件服务器
      ///
 
      public string host { get; set; }
      ///
 
      /// 正文是否是html格式
      ///
 
      public bool isbodyHtml { get; set; }
      ///
 
      /// 附件
      ///
 
      public string[] attachmentsPath { get; set; }
      public bool Send()
      {
          //使用指定的邮件地址初始化MailAddress实例
          MailAddress maddr = new MailAddress(mailFrom);
          //初始化MailMessage实例
          MailMessage myMail = new MailMessage();
          //向收件人地址集合添加邮件地址
          if (mailToArray != null)
          {
              for (int i = 0; i < mailToArray.Length; i++)
              {
                  myMail.To.Add(mailToArray[i].ToString());
              }
          }
          //向抄送收件人地址集合添加邮件地址
          if (mailCcArray != null)
          {
              for (int i = 0; i < mailCcArray.Length; i++)
              {
                  myMail.CC.Add(mailCcArray[i].ToString());
              }
          }
          //发件人地址
          myMail.From = maddr;
          //电子邮件的标题
          myMail.Subject = mailSubject;
          //电子邮件的主题内容使用的编码
          myMail.SubjectEncoding = Encoding.UTF8;
          //电子邮件正文
          myMail.Body = mailBody;
          //电子邮件正文的编码
          myMail.BodyEncoding = Encoding.Default;
          myMail.Priority = MailPriority.High;
          myMail.IsBodyHtml = isbodyHtml;
          //在有附件的情况下添加附件
          try
          {
              if (attachmentsPath != null && attachmentsPath.Length > 0)
              {
                  Attachment attachFile = null;
                  foreach (string path in attachmentsPath)
                  {
                      attachFile = new Attachment(path);
                      myMail.Attachments.Add(attachFile);
                  }
              }
          }
          catch (Exception err)
          {
              throw new Exception("在添加附件时有错误:" + err);
          }
          SmtpClient smtp = new SmtpClient();
          //指定发件人的邮件地址和密码以验证发件人身份
          smtp.Credentials = new System.Net.NetworkCredential(mailFrom, mailPwd);
          //设置SMTP邮件服务器
          smtp.Host = host;
          try
          {
              //将邮件发送到SMTP邮件服务器
              smtp.Send(myMail);
              return true;
          }
          catch (System.Net.Mail.SmtpException ex)
          {
              return false;
          }
      }
  }
 
  三:还需要额外加载的类
 
  Using System.Net.Mail;
 
  Using System.Net;
 
  四:生成一个6位长度的验证码
 
  public string CreateValidateCode(int length)
 
  {
 
  int[] randMembers = new int[length];
 
  int[] validateNums = new int[length];
 
  string validateNumberStr = “”;
 
  //生成起始序列值
 
  int seekSeek = unchecked((int)DateTime.Now.Ticks);
 
  Random seekRand = new Random(seekSeek);
 
  int beginSeek = (int)seekRand.Next(0, Int32.MaxValue - length * 10000);
 
  int[] seeks = new int[length];
 
  for (int i = 0; i < length; i++)
 
  {
 
  beginSeek += 10000;
 
  seeks[i] = beginSeek;
 
  }
 
  // 生成随机数字
 
  for (int i = 0; i < length; i++)
 
  {
 
  Random rand = new Random(seeks[i]);
 
  int pownum = 1 * (int)Math.Pow(10, length);
 
  randMembers[i] = rand.Next(pownum, Int32.MaxValue);
 
          }
          //生成随机数字
          for (int i = 0; i < length; i++)
          {
              string numStr = randMembers[i].ToString();
              int numLength = numStr.Length;
              Random rand = new Random();
              int numPosition = rand.Next(0, numLength - 1);
              validateNums[i] = Int32.Parse(numStr.Substring(numPosition, 1));
          }
          // 生成验证码
          for (int i = 0; i < length; i++)
          {
              validateNumberStr += validateNums[i].ToString();
          }
          return validateNumberStr;
      }
  五:使用qq邮箱的话需要开启一个服务
 
  asp.net mvc 数据验证_asp验证码_asp服务器验证
 
  六:邮箱验证码的获取
 
  //验证码 邮箱获取
 
  public string CodeEmail(string emailinfo)
 
  {
 
  //Response.Write(“”);
 
  //return View(“Register”);
 
  return YZCode(emailinfo);
 
  }
 
  public string YZCode(string LoginEmial)
 
  {
 
  string code = CreateValidateCode(6);
 
  YZMCode = code;
 
  Email email = new Email
 
  {
 
  host = “smtp.qq.com”,
 
  mailBody = code,
 
  mailFrom = “**********@qq.com”,
 
  mailPwd = “zlihferffrhdfjif”,
 
  mailSubject = “来自明日yi游的登录验证码!”,
 
  mailToArray = new string[] { LoginEmial }
 
  };
 
  bool b = email.Send();
 
  if (b == true)
 
  {
 
  return “验证码已发送 请查收!”;
 
  }
 
  else
 
  {
 
  return “您输入的账号有误请重新输入”;
 
  }
 
  }
 
  完成以上步骤就可实现邮箱发送验证码的功能了。
 

(编辑:百客网 - 域百科网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章