2016-03-16 9 views
3

У меня проблема при отправке писем через nodemailer и AWS. Ниже приведены мои настройки:Nodemailer не может отправлять почту с использованием aws на производственном сервере

var transporter = nodemailer.createTransport("SMTP", smtpTransport({ 
    host: 'email-smtp.us-west-2.amazonaws.com', 
    service: 'SES', 
    port: 25, 
    secure: true, 
    debug: true, 
    auth: { 
     user: 'XXX', 
     pass: 'XXX' 
    } 
})); 

отправки почты код:

transporter.sendMail({ 
     from: [email protected], 
     to: [email protected], 
     subject: 'XXX', 
     html: 'XXX' 
     }, function(error, response) { 
     if(error){ 
      console.log(error); 
     }else{ 
      console.log("Message sent: " + response.message); 
     } 
}); 

Я получаю следующее сообщение об ошибке:

{ [Error: connect ECONNREFUSED 127.0.0.1:25] 
    code: 'ECONNREFUSED', 
    errno: 'ECONNREFUSED', 
    syscall: 'connect', 
    address: '127.0.0.1', 
    port: 25, 
    stage: 'init' } 

Вот что мой объект Транспортер выглядеть, когда я печатал:

Transport { 
    options: 
    SMTPTransport { 
    domain: null, 
    _events: {}, 
    _eventsCount: 0, 
    _maxListeners: undefined, 
    options: 
     { host: 'email-smtp.us-east-1.amazonaws.com', 
     service: 'SES', 
     port: 465, 
     secure: true, 
     debug: true, 
     auth: [Object] }, 
    logger: { info: [Function], debug: [Function], error: [Function] }, 
    name: 'SMTP', 
    version: '2.4.1[client:2.3.1]', 
    maxConnections: 5, 
    maxMessages: Infinity }, 
    transportType: 'SMTP', 
    dkimOptions: false, 
    transport: 
    SMTPTransport { 
    options: 
     SMTPTransport { 
     domain: null, 
     _events: {}, 
     _eventsCount: 0, 
     _maxListeners: undefined, 
     options: [Object], 
     logger: [Object], 
     name: 'SMTP', 
     version: '2.4.1[client:2.3.1]', 
     maxConnections: 5, 
     maxMessages: Infinity }, 
    pool: 
     SMTPConnectionPool { 
     domain: null, 
     _events: {}, 
     _eventsCount: 0, 
     _maxListeners: undefined, 
     port: 25, 
     host: 'localhost', 
     options: [Object], 
     _connectionsAvailable: [], 
     _connectionsInUse: [Object], 
     _messageQueue: [Object], 
     _idgen: 2 } }, 
    version: '0.3.35', 
    sendMail: [Function] } 

Как вы можете ясно видеть, что он использует разные настройки, определенные мной.

Я не могу найти проблему. Любая помощь будет оценена.

ответ

3

, если вы хотите отправить почту через aws, лучше использовать модуль aws-sdk. использование приводится ниже

var aws = require('aws-sdk'); 
module.exports = function (to, from, sub, body) { 
    aws.config.update({ 
    accessKeyId: 'accessKeyId', 
    secretAccessKey: 'secretAccessKey', 
    region: 'region' 
    }); 

// load AWS SES 
    var ses = new aws.SES({apiVersion: 'latest'}); 


// this sends the email 
    ses.sendEmail({ 
     Source: from, 
     Destination: { 
      ToAddresses: to 
     }, 
     Message: { 
      Subject: { 
      Data: sub 
      }, 
      Body: { 
      Html: { 
       Data: body 
      } 
      } 
     } 
     } 
     , function (err, data) { 
     if (err) { 
      console.log(err); 
     } else { 
      console.log('Email sent:'); 
      console.log(data); 
     } 
     }); 
}; 

Надеется, что это помогает :)

+0

Благодаря @FastTurtle, он работал ... – BugCoder

+0

@FastTurtle Но есть способ исправить вышеуказанную ошибку без использования «AWS-СДК»? –