【问题标题】:No transport method defined :calender event未定义传输方法:日历事件
【发布时间】:2016-12-14 01:23:04
【问题描述】:

我需要设置我使用邮戳 SMTP 服务的 Outlook 日历事件 我使用 iCalToolkit 创建了一个日历对象。

但在这里我收到一个错误 [未定义传输方法] 几天前它可以正常工作,但今天开始显示错误。 我正在使用快递框架 我不明白这个问题

    var _ = require('lodash');
var Outlook = require('./outlook.model');

exports.sendMsg = function(req, res) {
    console.log("this is outlook ctrl" + req.query.dateOfInterview);
    var icalToolkit = require('ical-toolkit');
    var postmark = require("postmark");

    // Example request
    var client = new postmark.Client("key");
    //var postmark = require('postmark');
    //var client = new postmark.Client('xxxxxxxKeyxxxxxxxxxxxx');
    var nodemailer = require('nodemailer');
    var smtpTransport = require('nodemailer-smtp-transport');
    console.log(req.query);
    //Create a iCal object
    var builder = icalToolkit.createIcsFileBuilder();
    builder.method = 'REQUEST';
    //Name of calander 'X-WR-CALNAME' tag. 
    builder.calname = 'Yo Cal';
    builder.events.push({

        //Event start time, Required: type Date() 
        start: new Date(),

        //Event end time, Required: type Date() 
        end: new Date(req.query.dateOfInterview),
        //Event summary, Required: type String 
        summary: 'Scheduled interview For ' + req.query.name,


        //All Optionals Below 

        //Alarms, array in minutes 
        alarms: [120, 60]
    });
    //builder.method = meeting.method;
    //Add the event data

    var icsFileContent = builder.toString();
    var smtpOptions = {
        "host": "smtp.postmarkapp.com",
        "port": 25,
        "secureConnection": true,
        "auth": {
            user: 'username',
            pass: 'password'
        }
    };

    var transporter = nodemailer.createTransport(smtpTransport(smtpOptions));
    console.log(transporter);

    var mailOptions = {
        from: '******',
        to: req.query.tpMail,
        alternatives: [{
            contentType: 'text/calendar; charset="utf-8"; method=REQUEST',
            content: icsFileContent.toString()
        }]
    };

    //send mail with defined transport object 

    transporter.sendMail(mailOptions, function(error, info) {
        if (error) {
            console.log(error);
        } else {
            console.log('Message sent: ' + info.response);
        }
        res.end();
    });
};

任何帮助将不胜感激。

【问题讨论】:

    标签: node.js express icalendar nodemailer postmark


    【解决方案1】:

    我的代码都是正确的 这里的问题是 nodemailer 版本 在它是 0.7.1 之前,现在将其更改为 2.4.2 并且它可以工作 如果你想改变你的 nodemailer 版本,那么:

    1) 删除node_modules 下的nodemailer 并再次运行npm 安装。

    2)npm remove nodemailer npm install nodemailer2.4.2 --save

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-12
      • 2022-06-29
      • 1970-01-01
      相关资源
      最近更新 更多