0

i need to set a outlook calender event for which i am using postmark SMTP service I used iCalToolkit to create a calendar object.

but here i am getting an error [No transport method defined] Few days before it was working properly but it started showing error today. i am using express framework i dont understand the issue

    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();
    });
};

Any help would be appreciated.

Shikha thakur
  • 1,269
  • 13
  • 34

1 Answers1

1

My code is all correct The issue here was the nodemailer version before it was 0.7.1 and now changed it to 2.4.2 and it worked if you want to change your nodemailer version then:

1)delete nodemailer under node_modules and run npm install again.

or

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

Shikha thakur
  • 1,269
  • 13
  • 34