node 如何通过 smtp 发送 email ? nodemailer 模块如何使用
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
本文中,苏南大叔描述的是:如何使用node
发送email
,发送的过程中,正文采用的html
带图片的形式。当然,发送是否被拦截,是否被判断为垃圾邮件,这个并不是本文所考虑的问题。
本文的测试环境是:node 8.11.3
、npm 5.6.0
、nodemailer 4.7.0
。
安装依赖nodemailer
相关npm
安装脚本如下:
npm install nodemailer --save
内置的smtp
信息
在nodemailer
内部,其实内置很多常见的smtp
地址,可以参见下面这个文件:
node_modules/nodemailer/lib/well-known/services.json
对于nodemailer
这个库来说,是内置了一些常见的邮箱smtp
信息服务的,也就是说,可能并不需要做相关设置。如果没有内置的配置信息,就需要您参照下一步确定smtp
相关信息了。
确定smtp
参数
通过smtp
发信的过程中,需要确定用户名
、密码
、smtp地址
、smtp端口
这些信息。这些信息都需要到邮件服务提供商去确认相关参数。一般可以查询“如何设置客户端软件”获得。这里面的变数很多的。
- 比如用户名和密码,很有可能并不是你所想象的那样的。对于
qq
来说,密码其实是授权码。 - 而
smtp
的端口号,一般都是这么设置的:使用SSL
,端口号为465
。当然,如果不使用SSL
的话,端口号一般为25
。
下面的是几个已知的smtp
的地址:
name | address |
---|---|
QQ邮箱 | smtp.qq.com |
腾讯企业邮箱 | smtp.exmail.qq.com |
阿里云企业邮箱 | smtp.qiye.aliyun.com |
阿里云企业邮箱 | smtp.mxhichina.com |
发信脚本
下面的脚本是个demo
,注意需要替换相关参数,不解释。
var mail_usr = "@";
var mail_pwd = "pwd";
var mail_host = "smtp_host";
var mail_to = "@";
var mail_title = “title”;
var mail_body = “<b>hello</b>”;
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
//service: 'qq',
host: mail_host, // 主机
secureConnection: true, // 使用 SSL
port: 465, // SMTP 端口
auth: {
user: mail_usr,
pass: mail_pwd
}
});
var mailOptions = {
from: mail_usr, // 发件地址
to: mail_to, // 收件列表
subject: mail_title, // 标题
html: mail_body // html 内容
};
transporter.sendMail(mailOptions, function(error, info){
if(error){
return console.log(error);
}
console.log('Message sent: ' + info.response);
});
成功和失败的情况,截图如下:
smtp
的特殊设置说明
重点说明的就是下面的代码设置:
var transporter = nodemailer.createTransport({
//service: 'qq',
host: mail_host, // 主机
secureConnection: true, // 使用 SSL
port: 465, // SMTP 端口
//...
});
设置好service
的话,就相当于设置了host
、secureConnection
、port
,因为service
的名称是内置的服务商名称。具体支持的定义,请参见上一步骤的说明文件。
email
正文的特别说明
正文支持html
,但是也可以仅仅设置text
,而不是html
。这个就比较容易理解了。两者设置其一即可,苏南大叔认为设置html
即可。
var mailOptions = {
//...
text: '<b>Hello</b>world', // 文本
//html:'<b>Hello</b>world', // html
//...
};
总结
node
发信比php
发信,似乎更加轻便一些。下面的链接是使用php
的phpmailer
发信的相关经验文字。大家可以对比看看。
更多email
相关经验文字,请点击这里查看。
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。