1.EazyEmail邮件发送类库
Net 类库自带了邮件发送功能。笔者对该类库,从使用的角度进行了二次封装,nuget上可搜索EazyEmail,注入容器时通过委托来获得邮箱服务器的配置地址以及发送地址直接调用send方法即可。
容器注入代码。这里定义的委托,每次发送之前可以去数据库拿邮箱配置数据跟发送账户,笔者自己用的时候是通过Redis缓存 存取数据,因为像断网断电这种可能是批量出现的,需要批量发送告警邮件,所以放Redis里,然后Redis通过rdb功能设置每秒每个键变化就持久化的策略,没毛病。
services.AddEmailKit(() => { EmailConfig emailConfig = new EmailConfig( ); #region 163网易邮件发送 emailConfig.EmailSmtpAddress = "smtp.163.com"; emailConfig.EmalHostPort = 587; emailConfig.SendEmailAccount = "[email protected]"; emailConfig.SendEmailPassWord = "******"; #endregion #region qq 邮件发送 // emailConfig.EmailSmtpAddress = "smtp.qq.com"; // emailConfig.EmalHostPort = 587; // emailConfig.SendEmailAccount = "[email protected]"; // emailConfig.SendEmailPassWord = "*****"; #endregion return emailConfig; <strong>本文来源gaodai#ma#com搞@@代~&码*网2</strong> });
发送代码
MailBox QqMailbox = new MailBox(); QqMailbox.To = "[email protected]"; QqMailbox.Body = "qqfadsfa邮箱测试"; QqMailbox.Cc = "[email protected]"; QqMailbox.Subject = "qq邮fadfa箱测试"; emailQueueService.Enqueue(QqMailbox);
EazyEmail 内置阻塞队列,只要队列有邮件,里面开了一个线程会不断地发送,发送完毕会阻塞住,对应线程执行权也会回归线程池,一旦继续有邮件,线程自动唤醒会继续发送邮件。有关EazyEmail的使用与设计思路有需要介绍可留言,可另起一篇作讲解,已经上传到nuget,可自行搜索EazyEmail去使用,使用非常方便。
EazyEmail类库源码 github地址需要者可自行下载
2.邮件发送授权码与邮件密码
第三方客户端登录邮件服务器来进行发送邮件,接收邮件已经极为普遍,某种场景下是代码里嵌入发送邮件信息,当然也包含了发送邮件的密码,近两年邮件服务商为了提高邮件的保密性,网易与qq邮箱规定了第三方客户端发送邮件只能通过发送授权码。
网易发送授权码生成过程:
开启所需要的邮件发送服务跟接收服务
手机微信扫描发送二维码
手机短信发送之后,点击我已发送 生成授权码
此授权码可直接用来作为应用程序的发送密码。
qq邮箱发送授权码生成过程:
生成授权码步骤,设置,账户往下拉。