通过 Node.js 程序发送邮件
现在已经搭建好了邮箱服务器,如果有程序发送邮件的需求该如何实现呢?
Node.js
中有个 nodemailer npm 包,处理程序发送邮件是非常容易的。首先安装包。
$ npm i nodemailer --save
现在写个 Demo
程序测试下
'use strict';
const nodemailer = require('nodemailer');
async function main() {
let testAccount = {
user: 'huoyijie',
pass: '******'
};
// create reusable transporter object using the default SMTP transport
let transporter = nodemailer.createTransport({
host: 'mail.huoyijie.cn',
port: 465,
secure: true, // true for 465, false for 25
auth: {
user: testAccount.user, // generated ethereal user
pass: testAccount.pass, // generated ethereal password
},
});
// send mail with defined transport object
let info = await transporter.sendMail({
from: `huoyijie <huoyijie@huoyijie.cn>`, // sender address
to: 'author@huoyijie.cn, huorong@huoyijie.cn', // list of receivers
subject: 'Hello, from Node.js', // Subject line
text: 'Hello world?', // plain text body
html: '<b>Hello world?</b>', // html body
});
console.log('Message sent: %s', info.messageId);
// Message sent: <42a91923-be1e-0bab-cd2e-c404a59165fd@huoyijie.cn>
}
main().catch(console.error);
下面是邮箱服务器上已有的一个邮件帐号,密码是该帐号的系统登录密码。
let testAccount = {
user: 'huoyijie',
pass: '******'
};
下面是邮件服务器域名、端口号,通过 SSL 建立连接
host: 'mail.huoyijie.cn',
port: 465,
secure: true, // true for 465, false for 25
上面代码保存在 sendmail.js
中,下面来运行该程序
$ node sendmail.js
Message sent: <42a91923-be1e-0bab-cd2e-c404a59165fd@huoyijie.cn>
Preview URL: false
打开 Thunderbird
客户端,已收到邮件!