前端不说了。主要讲后端。通过postman模拟前端请求。

参考文章:.NET发送邮箱(验证码)_紫晶城的博客-CSDN博客 但实践过程中发现一些问题,现已解决。故在此做一个记录。

第1步:设置发件邮箱开启POP3服务。我这边是126邮箱。

第2步:写后端代码:

接口:SendEmailVerificationCode4Register

        /// <summary>/// 注册页面,发送邮箱验证码/// </summary> /// <param name="phoneNum"></param>/// <returns></returns>[HttpPost]public ActionResult SendEmailVerificationCode4Register(SendEmailVerificationCode4RegisterModel emailVerifyModel){var result = new ResultDto();//定义一个接口响应对象,其实就是一个object,方便把结果返回给前端#region 一些数据验证//非空验证if (emailVerifyModel == null){return Json(result.Error("传入参数为空"));}if (string.IsNullOrWhiteSpace(emailVerifyModel.Email)){return Json(result.Error("邮箱不能为空"));}if (string.IsNullOrWhiteSpace(emailVerifyModel.UserName)){return Json(result.Error("用户名不能为空"));}//验证邮箱格式if (!RegexHelper.IsEmail(emailVerifyModel.Email)){return Json(result.Error("邮箱格式不正确"));}//系统用户表:var existSysUser = _sysUserDbContext.SysUsers.FirstOrDefault(m => (m.UserName == emailVerifyModel.UserName || m.Email == emailVerifyModel.Email) && !m.Deleted);if (existSysUser != null){if (existSysUser.UserName == emailVerifyModel.UserName){return Json(result.Error("用户名已存在"));}return Json(result.Error("邮箱已存在"));}#endregion//开始发送邮件var verifyCode = SendEmailVerificationCode(emailVerifyModel.Email);result.Data = new{verifyCode};return Json(result.OK("发送成功"), JsonRequestBehavior.AllowGet);}

SendEmailVerificationCode:

        private string SendEmailVerificationCode(string emailTo){string verifyCode = GenerateVerifyCode();//发送验证码string content = "****提醒您:您正在使用邮箱安全验证服务,您本次操作的验证码是:" + verifyCode;string subject = "【****】登录注册用户信息提示";EmailHelper.SendEmail1(emailTo, subject, content);return verifyCode;}/// <summary>/// 生成4位数字验证码/// </summary>/// <returns></returns>public static string GenerateVerifyCode(){Random rad = new Random();//实例化随机数产生器rad;int value = rad.Next(1000, 10000);//用rad生成大于等于1000,小于等于9999的随机数;//随机生成4位验证码string verifyCode = value.ToString();return verifyCode;}

EmailHelper.SendEmail:

        /// <summary>/// 发送邮箱/// </summary>/// <param name="mailTo">收件人</param>/// <param name="mailSubject">邮件主题</param>/// <param name="mailContent">邮件内容</param>/// <returns></returns>public static void SendEmail1(string mailTo, string mailSubject, string mailContent){try{SmtpClient mailClient = new SmtpClient("smtp.126.com");mailClient.EnableSsl = true;mailClient.UseDefaultCredentials = false;//Credentials登陆SMTP服务器的身份验证.mailClient.Credentials = new NetworkCredential("你的发件邮箱@126.com", "pop3授权密码");//邮箱,pop3授权密码(注意不是你的126邮箱登录密码)MailMessage message = new MailMessage(new MailAddress("你的发件邮箱@126.com"), new MailAddress(mailTo));//发件人,收件人message.IsBodyHtml = true;// message.Bcc.Add(new MailAddress("tst@qq.com")); //可以添加多个收件人message.Body = mailContent;//邮件内容message.Subject = mailSubject;//邮件主题//Attachment 附件//Attachment att = new Attachment(@"C:/hello.txt");//message.Attachments.Add(att);//添加附件//Console.WriteLine("Start Send Mail....");//发送....mailClient.Send(message); // 发送邮件}catch (Exception e){Logger logger = LogManager.GetCurrentClassLogger();logger.Error(LoggerHelper.GetErrorMsg(e, "EmailHelper", "SendEmail1", null));}}

第3步,执行。

运行结果:

期间遇到两次报错:

  1. 报错1:

    1. 报错信息:邮件发送问题,邮箱不可用,服务器响应为【此处是一段乱码】
    2. 报错代码:mailClient.Send(message); // 发送邮件
    3. 出错原因:经排查,发现是POP3服务未开启。开启后此报错即可解决。
  2. 报错2:
    1. 报错信息:不允许使用邮箱名称。 服务器响应为:authentication is required
    2. 错误代码(依然是):mailClient.Send(message); // 发送邮件
    3. 出错原因:经排查,发现是这段代码中的密码,我用了邮箱的登录密码,而不是POP3授权密码。改成POP3授权密码即可解决。
mailClient.Credentials = new NetworkCredential("你的发件邮箱@126.com", "pop3授权密码");//邮箱,pop3授权密码(注意不是你的126邮箱登录密码)

.NET发邮件(验证码)相关推荐

  1. 一种发短信验证码,二种发邮件验证码

    前台: <divclass="rightcon bgwhite"> <input type="text"name="bae017&q ...

  2. SpringBoot-Mail 发邮件(单发、群发、加附件、HTML格式)

    我们处理异常通常会写入日志,但我们无法及时知道.如果能够将异常信息发送到邮箱,我们可以在第一时间发现这个异常.除此以外,还可以用来给用户发验证码以及各种离线消息等等. 说明:本Demo是用Spring ...

  3. Python基础笔记_Day12_Python元类、type动态创建类、Python动态创建方法、Python运算符、Python发邮件、短信

    Day12_Python元类.type动态创建类.Python动态创建方法.Python运算符重载.Python发邮件.短信 12.01_Python语言基础(类对象)(熟悉) 12.02_Pytho ...

  4. Python发邮件遇到的巨坑

      因网站需要,准备添加一个邮箱绑定的功能.使用的是django框架,因为它已经封装好了发邮件的模块,想来不会太难.结果一试,553.553.553-然后,一天过去了- 1.使用QQ邮箱发邮件   上 ...

  5. springboot项目系列-论坛系统06整合rabbitmq实现异步发邮件

    springboot项目系列-博客系统06整合rabbitmq实现异步发邮件 今天突发奇想,既然会了rabbitmq为何不用,之前的注册发邮件功能是使用springboot的异步任务做的,但是想想以后 ...

  6. Java 发邮件-带附件且正文html格式

    入职新公司不久,接到一个给用户发邮件的需求,有两点需要说明的:1)正文需要格式化:2)需要带附件. 大概了解了一下需求,我马上开始思考,现有项目中是否有类似的接口可以支持,如果可以支持,那我就不用再开 ...

  7. springboot 简单发邮件 QQ邮箱

    文章目录 pom yaml 发邮件 pom <dependency> <groupId>org.springframework.boot</groupId>< ...

  8. 利用exchangelib快速上手使用python发邮件

    前言 之前一直知道使用python smtp发邮件,但是最近发现一个神器exchangelib,用这个神器发邮件,简直简单的不能再简单了,官方文档在这里 实例 只需要将下面的xxx改成你的信息就可以了 ...

  9. 公司内部exchange2010 下删除误发邮件

    1.Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 2.get-mailbox | search-mailbox -Search ...

  10. 自动发邮件的程序 c语言,5分钟!教你用C语言发送邮件:附送源码+教学!

    5分钟!教你用C语言发送邮件:附送源码+教学!-1.jpg (10.71 KB, 下载次数: 0) 2018-9-3 02:21 上传 关注<一碳科技>,获取更多知识! 前言 相信年夜家都 ...

最新文章

  1. 智源青年科学家林乾:揭开人工智能的黑匣,从解答最基本的问题开始
  2. Adobe flash cs5 的Java运行时环境初始化错误 完美解决方法
  3. java map 多种类型吗_是多种类型的Java列表是否可行
  4. java oca_OCA第4部分中的Java难题
  5. Java Swing/AWT API速查手册
  6. JavaScript 从入门到放弃(二)模块化工具requirejs
  7. Python 三目运算符(三分支)
  8. 设计模式那点事读书笔记(2)----抽象工厂模式
  9. 北京工业大学计算机考研813,北京工业大学2020年考研813电工学考试大纲
  10. Customers带出功能JS
  11. 保险渠道的两极之路——保险新渠道(一)
  12. SDN控制器技术综述:SDN交换机配置技术与控制技术的关系—Vecloud
  13. 【强化学习】竞争深度Q网络(Dueling DQN)求解倒立摆问题 + Pytorch代码实战
  14. IKAnalyzer 分词工具的使用与问题
  15. 7-1 sdut-求一个3*3矩阵对角线元素之和7-2 求矩阵各行元素之和7-3 sdut- 对称矩阵的判定7-4 sdut- 杨辉三角7-5 sdut- 鞍点计算7-6 矩阵转置
  16. 上海11月月赛乙组解题报告
  17. 格式工厂安装与使用教程
  18. PyQt_QMessageBox
  19. symbian 模拟器 相关
  20. 华为是怎么研发的(17)——组织氛围

热门文章

  1. JVM - 进入Java虚拟机的真实世界
  2. MySQL数据库与JDBC编程
  3. SpringBoot 使用validation数据校验-超级详细 - 第406篇
  4. HTML|下拉框和文本域、文件域
  5. 云服务器连接不上怎么办
  6. 翟东平微信公众号视频教程JAVA201810版3/3阶段-翟东平-专题视频课程
  7. unite 2019 上海,东京,首尔,哥本哈根,悉尼 的视频/资料
  8. 简单理解O2O商业模式
  9. 如何用Excel制作工作计划,跟踪任务进度,快来学习吧
  10. 给手机安装sqlite3