Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sending mail in node.js using nodemailer

I am trying to send mail in node.js using Nodemailer but it shows some error like { [Error: self signed certificate in certificate chain] code: 'ECONNECTION', command: 'CONN' }

My node.js code is

var express    =    require('express');
var app        =    express();
var nodemailer = require('nodemailer');

var transporter = nodemailer.createTransport('smtps://something%40gmail.com:[email protected]');

var mailOptions = {
  to: '[email protected]',
  subject: 'Hello ?', 
  text: 'Hello world ??', 
  html: '<b>Hello world ??</b>' 
};

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

var server     =    app.listen(8900,function(){
  console.log("We have started our server on port 8900");
});
like image 776
Kevin Avatar asked Jul 18 '16 08:07

Kevin


2 Answers

try https://github.com/nodemailer/nodemailer/issues/406

add tls: { rejectUnauthorized: false } to your transporter constructor options

p.s It's not a good idea to post your mail server address, if it's a real one

like image 129
Narcotics Avatar answered Oct 29 '22 18:10

Narcotics


To allow to send an email via “less secure apps”, go to the link and choose “Turn on”.

(More info about less secure apps)

var nodemailer = require('nodemailer');
var smtpTransport = require('nodemailer-smtp-transport');

var mailAccountUser = '<YOUR_ACCOUNT_USER>'
var mailAccountPassword = '<YOUR_ACCOUNT_PASS>'

var fromEmailAddress = '<FROM_EMAIL>'
var toEmailAddress = 'TO_EMAIL'

var transport = nodemailer.createTransport(smtpTransport({
    service: 'gmail',
    auth: {
        user: mailAccountUser,
        pass: mailAccountPassword
    }
}))

var mail = {
    from: fromEmailAddress,
    to: toEmailAddress,
    subject: "hello world!",
    text: "Hello!",
    html: "<b>Hello!</b><p><a href=\"http://www.yahoo.com\">Click Here</a></p>"
}

transport.sendMail(mail, function(error, response){
    if(error){
        console.log(error);
    }else{
        console.log("Message sent: " + response.message);
    }

    transport.close();
});
like image 38
Yevhen Dubinin Avatar answered Oct 29 '22 19:10

Yevhen Dubinin