Nodemailer是Node.js应用程序的模块,可以轻松发送蛋糕电子邮件。该项目始于2010年,当时没有理智的选项来发送电子邮件,如今,它已成为大多数Node.js用户默认使用的解决方案。
下面说一下如何使用Nodemailer来发送有 接收、暂定、拒绝的邮件。先看一下最终的效果图。
使用的阿里邮箱。
看一下代码:
var icalToolkit = require('ical-toolkit');
var nodemailer = require('nodemailer');
var smtpTransport = require('nodemailer-smtp-transport');
async sendMail(param) {
var builder = icalToolkit.createIcsFileBuilder();
builder.method = 'REQUEST'; //日历事件方式
//添加事件数据
builder.events.push({
start: new Date(), // 会议开始时间
end: new Date(), // 会议结束时间
summary: '大会描述', // 会议日历描述
allDay: false, // 可选择全天活动 true: 邮件时间 00:00; false: 展示具体时间
location: '杭州阿里巴巴', // 活动地点
attendees: [ // 必选展示
{ name: '艾莉亚', email: 'xx@email.com' },
{ name: '亚瑟', email: 'xx@alibaba-inc.com' }
],
status: 'CONFIRMED', // 事件状态:CONFIRMED=确认(无效果); TENTATIVE=暂定(无效果);CANCELLED=会议取消(有效)
});
var icsFileContent = builder.toString();
var smtpOptions = {
host: 'smtp.alibaba-inc.com', // 邮箱协议
port: 465, // 邮箱的端口 465、587等...
secure: true, // 使用 SSL
auth: {
user: 'xx@alibaba-inc.com', // 邮箱账号
pass: 'xxxxxx', // 协议授权码,没有的话用自己的邮箱密码,例:阿里邮箱
}
};
var transporter = nodemailer.createTransport(smtpTransport(smtpOptions)); // 创建可重用传输器对象
var mailOptions = {
from: '"迷色" <xx@alibaba-inc.com>',
to: "xxxxx@alibaba-inc.com",
subject: '标准大会', //标题
html: `<div style="color: red;">标准大会邀请函</div>`, // 内容
alternatives: [{ // 日历事件
contentType: 'text/calendar; charset="utf-8"; method=REQUEST',
content: icsFileContent.toString()
}]
};
// 发送邮件
transporter.sendMail(mailOptions, function(error, info){
if(error){
console.log(error);
}
console.log('Message sent: ' + info.response);
});
return {success: true, data: {}}
}
大家可以去看一下nodemailer、ical-toolkit这两个库,nodemailer也提供日历事件,不过本人测试后并没有这样的效果。代码中参数不全,这只是最基础的一个议程日历邮件, 希望对大家有所帮助。
网友评论