2016-08-18 161 views
0

倒也沒新手使用AmazonWebService(AWS),但對我來說,我必須創建一些程序使用的是Node.js發送電子郵件使用AWS SES的Node.jsAWS SES發送電子郵件不工作

我已經閱讀過所有AWS SES文檔,但我不太瞭解。有些博客編寫了教程,我已經遵循了他們的代碼,但是在我的代碼中它並沒有工作。

我有兩個示例代碼,我寫了。這裏第一個代碼:

var nodemailer = require('nodemailer'); 
var ses = require('nodemailer-ses-transport'); 

var transporter = nodemailer.createTransport(ses({ 
    accessKeyId: 'xxxxxxxxxxxxxxxxxxx', 
    secretAccessKey: 'xxxxxxxxxxxxxxxxxxxxxxxxx' 
})); 

transporter.sendMail({ 
    from: '[email protected]', 
    to: '[email protected]', 
    subject: 'My Amazon SES Simple Email', 
    text: 'Amazon SES is cool' 
}); 

以上是從這個http://budiirawan.com/send-emails-using-amazon-ses-and-node-js/

代碼referrence其次是這樣的:

var aws = require('aws-sdk'); 

var ses = new aws.SES({ 
    accessKeyId: 'xxxxxxxxxxxxxxxxxxx', 
    secretAccesskey: 'xxxxxxxxxxxxxxxxxxxxxxxx', 
    region: 'us-west-2' 
}); 

// send to list 
var to = ['[email protected]']; 

// this must relate to a verified SES account 
var from = '[email protected]'; 


// this sends the email 
// @todo - add HTML version 
ses.sendEmail({ 
    Source: from, 
    Destination: { ToAddresses: to }, 
    Message: { 
     Subject: { 
      Data: 'A Message To You' 
     }, 
     Body: { 
      Text: { 
       Data: 'Stop your messing around', 
      } 
     } 
    } 
} 
, function(err, data) { 
    if(err) throw err 
     console.log('Email sent:'); 
     console.log(data); 
}); 

http://timstermatic.github.io/blog/2013/08/14/sending-emails-with-node-dot-js-and-amazon-ses/第二個代碼referrence。 第二個代碼給我錯誤消息:

C:\xampp\htdocs\mail\node_modules\aws-sdk\lib\request.js:31 
      throw err; 
      ^
Error: connect ENETUNREACH :80 
    at Object.exports._errnoException (util.js:856:11) 
    at exports._exceptionWithHostPort (util.js:879:20) 
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1063:14) 

兩個一點兒也不在所有的工作,我必須確保我的AWS訪問密鑰是正確的,我[email protected]已經通過AWS SES驗證。如果有人能解決這個問題,我非常友好。

回答

1

我已經發現如何解決這種情況。第一個代碼實際上起作用,我忘記了在SES聲明中包含AWS Region,我們應該從AWS獲得經過驗證的電子郵件。這是我的新代碼,它運行良好。謝謝

var nodemailer = require('nodemailer'); 
var ses = require('nodemailer-ses-transport'); 

var transporter = nodemailer.createTransport(ses({ 
    accessKeyId: 'xxxxxxxxxxxxxxxxxxx', 
    secretAccessKey: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 
    region: 'us-west-2' 
})); 

transporter.sendMail({ 
    from: '[email protected]', 
    to: '[email protected]', 
    subject: 'Email Testing', 
    html: '<h1>Title</h1>', 
    attachments: [ 
     { 
      filename: 'report', 
      path: 'C:\\xampp\\htdocs\\js\\report.xlsx', 
      contentType: 'application/vnd.ms-excel' 
     } 
    ] 
} 
, function(err, data) { 
    if(err) throw err 
     console.log('Email sent:'); 
     console.log(data); 
}); 

該代碼使用發送附件太多,希望它會幫助某人得到相同的情況。

0

錯誤Error: connect ENETUNREACH :80表示網絡無法訪問。這是某種類型的網絡問題,可能是安全組問題。

你可以telnet出站到郵件服務器並確認嗎?

更改安全組設置以允許所有出站通信,然後重試。