当前位置: 首页 > 科技观察

程序员:如何使用nodejs自动发送邮件?

时间:2023-03-17 22:51:25 科技观察

之前用Nodejs做了很多服务器模块,最近抽空复习了一下。接下来笔者将介绍如何使用Nodejs自动给用户发送邮件。笔者将详细介绍邮件自动发送的实现,并带你通过一个实际案例。掌握使用nodejs自动发送邮件,最后介绍一些实际的应用场景,加深对程序的理解,达到学以致用的目的。实现自动发送邮件的程序,笔者使用了基于Nodejs生态的nodemailer,可以方便的帮我们发送邮件,官网地址:nodemailer。之所以选择nodemailer,是因为它提供了非常灵活的自定义配置和安全保障,例如:零依赖的单一模块、易于代码审查、没有死胡同的Unicode支持。使用任何字符,包括表情符号💪邮件内容既支持普通文本,也支持自定义html支持自定义附件支持安全可靠的SSL/STARTTLS邮件发送支持自定义插件处理邮件信息还有很多其他的功能我就不一一列举了。接下来看一个作者精简翻译的官网案例:"usestrict";constnodemailer=require("nodemailer");//使用async..await创建一个执行函数asyncfunctionmain(){//如果你没有一个真实的邮箱,可以用这个方法创建一个测试邮箱lettestAccount=awaitnodemailer.createTestAccount();//创建Nodemailer传输SMTP或者其他传输机制.ethereal.email",//文章三方邮箱主机地址port:587,secure:false,//truefor465,falseforotherportsauth:{user:testAccount.user,//发件人邮箱账号pass:testAccount。pass,//邮箱授权密码},});//定义传输对象并发送邮件letinfo=awaittransporter.sendMail({from:'"Dooring👻"',//发件人邮箱账号to:"bar@example.com,baz@example.com",//邮箱主题收件人账号:"HelloDooring",//Subjectlinetext:"H5-Dooring?",//正文内容html:"欢迎注册h5.dooring.cn,您的邮箱验证码为:${emailCode}",//htmlcontent,如果设置了html内容,文本内容将被忽略});}main().catch(console.error);上面的代码是一个完整的发送邮件的例子,包含纯文本和HTML文本。作者做了一个详细的翻译,我们可以得出结论,为了发送电子邮件,我们需要以下3个步骤:创建一个Nodemailer传输SMTP或其他传输机制设置Message选项(发送什么消息给谁)使用sendMail()的之前创建的transport我们知道了methodtransfer消息对象的宏使用流程,接下来我们实现各个技术功能点来实现,需要注意下面的核心points:如何设置host如何设置auth如何配置Message选项回答了以上三个问题,我们就可以灵活的使用Nodemailer来发送自定义邮件了。如何设置host、port、secure这里我以网易邮箱为例。比如我们要使用自己的网易邮箱给用户发邮件,就需要注册一个网易邮箱来发邮件,比如dooring2021@163.com。由于我们使用的是SMTP发送器,所以我们可以在邮箱首页找到如下选项进行设置:在页面底部,我们可以找到对应的主机,如下:关于端口和安全,我们使用默认配置即可,将secure设置为true,表示端口默认使用465。具体配置如下:如何设置authauth我们在上一步已经涉及到,在开启IMAP/SMTP服务时会提示保存邮件授权码,这里的授权码就是auth.pass的值,auth.user代表当前授权的邮箱。如何设置消息配置是我们电子邮件服务的重要组成部分。官方提供了如下配置说明:这里我给大家做一个详细的介绍:来自发件人的邮箱。所有电子邮件地址都可以是普通的“sender@server.com”或格式化为“sendername”sender@server.com“以逗号分隔的列表或收件人电子邮件地址的排列cc逗号分隔列表或收件人电子邮件地址数组将出现在'cc'字段bcc逗号分隔列表或将出现在'bcc:'字段中的收件人电子邮件地址数组文本附件的内容将被忽略。熟悉以上配置后,我们基本可以配置满足80%场景的邮件发送需求。这里我们看一个简单的设置Message的例子:awaittransporter.sendMail({from:'"v6.dooring"',//senderaddressto:'xujiang156@qq.com',//listofreceiverssubject:'welcomedooring',//Subjectlinetext:'Helloworld?',//plaintextbodyhtml:`欢迎注册v6.dooring,您的邮箱验证码为:${emailCode}`,//htmlbody})这种情况就是用dooringemail给一个普通用户发邮件验证你熟悉代码场景吗?这个场景目前在很多登录注册相关的场景中都有使用。来看看实际效果:扩展我们可以使用Nodemailer开发很多有趣的产品,比如:在线邮件客户端定制邮件模板邮件验证中心系统邮件群发助手等关于第二个应用场景,目前有很多漂亮的邮件模板开源,比如FoundationforEmailsemailframehttp://emailframe.workMJMLhttps://mjml.io最后,笔者也在持续更新H5编辑器H5-Dooring。近期更新如下:修复图片库选择bug增加省市级联组件增加批量导入excel数据能够增加表单自定义验证音频组件增加自动播放控件,循环播放等配置项增加横向滑动组件