Nodemailer and Amazon SES

amazon-ses, javascript, nodemailer

Solution

Please use aws-sdk directly. It work for me. Hope it will help you.`

let nodemailer = require('nodemailer');
let AWS = require('aws-sdk');

// configure AWS SDK
AWS.config.update({
  accessKeyId: << SES_ACCESS_KEY >>,
  secretAccessKey: << SES_SECRET_KEY >>,
  region: << SES_REGION >>,
});

// create Nodemailer SES transporter
let transporter = nodemailer.createTransport({
SES: new AWS.SES({
  apiVersion: '2010-12-01'
})
});

// send some mail
transporter.sendMail({
  from: 'sender@example.com',
  to: 'recipient@example.com',
  subject: 'Message',
  text: 'I hope this message gets sent!'
}, (err, info) => {
  console.log(info.envelope);
  console.log(info.messageId);
});

Problem

My structure: ``` site -- node_modules ---- nodemailer -- webclient ---- js ------- controller.js site/node_modules/nodemailer site/webclient/js/controller.js ``` site/webclient/js/controller.js: ``` var nodemailer = require('../../node_modules/nodemailer'); var transport = nodemailer.createTransport('SES', { AWSAccessKeyID: 'xxx', // real one in code AWSSecretKey: 'xxx', // real one in code ServiceUrl: 'email-smtp.us-west-2.amazonaws.com' }); var message = { from: 'example@mail.com', // verified in Amazon AWS SES to: 'example@mail.com', // verified in Amazon AWS SES subject: 'testing', text: 'hello', html: '<p><b>hello</b></p>' + 'test' }; transport.sendMail(message, function(error) { if (error) { console.log(error); } else { console.log('Message sent: ' + response.message); } }); ``` This code is part of a controller where all other functions within it work perfectly. - Is there something I am missing? - Perhaps I'm calling for the incorrect nodemailer module? - Or should the transport be SMTP, not SES? I'm stuck.

Original source