Shikha thakur
Shikha thakur

Reputation: 1289

Error:No transport method defined

I need to create an outlook calender event from my application where i am using express js but i am getting an error as [Error:No transport method defined] and after sometime the responde is 200 success after some 1189989 ms

But in outlook i couldn't able to see any event

so here is what i tried

  var _ = require('lodash');
var Outlook = require('./outlook.model');
var icalToolkit = require('ical-toolkit');
var nodemailer = require('nodemailer');
var smtpTransport = require('nodemailer-smtp-transport');
//Create a iCal object
var builder = icalToolkit.createIcsFileBuilder();
var icsFileContent = builder.toString();
var smtpOptions = {
"secureConnection": true,
"from": "*****",
"host": "smtp-mail.outlook.com",
"secureConnection": true,
"port": 587,
"transportMethod": "SMTP",
"auth": {
    user: '******',
    pass: '*****'
}};
var builder = icalToolkit.createIcsFileBuilder();
builder.events.push({ 
 start: new Date(),
 end: new Date(),
  });
var transporter = nodemailer.createTransport(smtpTransport(smtpOptions));
var mailOptions = {
from: '******',
to: '******',
subject: 'Meeting to attend',
html: "Anything here",
text: "hiiiiiiiiiiiiiiiiii",
alternatives: [{
    contentType: 'text/calendar; charset="utf-8"; method=REQUEST',
    content: icsFileContent.toString()
}]};
//send mail with defined transport object 
exports.send = function(req, res) {
transporter.sendMail(mailOptions, function(error, info) {
    if (error) {
        console.log(error);
    } else {
        console.log('Message sent: ' + info.response);
    }
});};

Here is the index.js where the routing is done

'use strict';

var express = require('express');
var controller = require('./outlook.controller');    
var router = express.Router();
router.get('/', controller.index);
router.get('/send', controller.send);       

router.get('/:id', controller.show);
router.post('/', controller.create); 
router.put('/:id', controller.update);
router.patch('/:id', controller.update);
router.delete('/:id', controller.destroy);
 module.exports = router;

I dont understand where i am going wrong

Any help would be highly appreciated..

Upvotes: 1

Views: 1514

Answers (1)

Nguyen Sy Thanh Son
Nguyen Sy Thanh Son

Reputation: 5376

You have add transportMethod into smtpOptions as the below:

var nodemailer = require('nodemailer');
var smtpTransport = require('nodemailer-smtp-transport');
var transporter = nodemailer.createTransport(smtpTransport(
{
        from: "[email protected]",
        host: "smtp.mail.com",
        secureConnection: true,
        port: 465,
        transportMethod: "SMTP",
        auth: {
            user: "[email protected]",
            pass: "userpass"
        }
    }
));

transporter.sendMail({
            from: "email from",
            to: data.to,
            subject: "test",
            html: "test email"
});

If you have a domain, you can register a MailGun account. Otherwise, you can use Gmail SMTP

Upvotes: 1

Related Questions