美文网首页
使用nodemailer发送议程日历邮件

使用nodemailer发送议程日历邮件

作者: 水中镜像 | 来源:发表于2020-11-20 17:12 被阅读0次

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也提供日历事件,不过本人测试后并没有这样的效果。代码中参数不全,这只是最基础的一个议程日历邮件, 希望对大家有所帮助。

相关文章

网友评论

      本文标题:使用nodemailer发送议程日历邮件

      本文链接:https://www.haomeiwen.com/subject/yntjiktx.html