nodemailer 2.x configuration for Office 365 direct send

David Williamson picture David Williamson · Jul 4, 2016 · Viewed 16k times · Source

I'm using nodemailer v2.4.2 with node.js v4.4.7 and I want to send emails from my server via my Office 365 SMTP mail server. I'm using the smtpTransport v2.5.0 with this configuration:

var transporter = nodemailer.createTransport(smtpTransport({
  host: 'smtp.office365.com',
  port: 25, // have tried 465
  secureConnection: secure,
  auth: {
    user: username,
    pass: password
  },
  tls: {
    rejectUnauthorized: false // don't verify certificates
  },
  ignoreTLS: false // don't turn off STARTTLS support
}));

I've tried specifying an authMethod of LOGIN and PLAIN but neither make any difference. When I try and send an email I get an error:

[Error: Invalid login: 504 5.7.4 Unrecognized authentication type]
code: 'EAUTH',
response: '504 5.7.4 Unrecognized authentication type',
responseCode: 504

Does anyone have any idea on what authorization type is expected by Office 365 and whether I need to specify any different settings in the nodemailer setup?

Answer

Julian Pinn picture Julian Pinn · Sep 24, 2016

This works for me:

    var transporter = nodemailer.createTransport({
        host: 'smtp.office365.com', // Office 365 server
        port: 587,     // secure SMTP
        secure: false, // false for TLS - as a boolean not string - but the default is false so just remove this completely
        auth: {
            user: username,
            pass: password
        },
        tls: {
            ciphers: 'SSLv3'
        }
    });

You may like to add:

    requireTLS: true