2014-06-26 25 views
6

Tôi đang sử dụng nodemailer nodejs để kết nối với dịch vụ email Amazon SES. Tất cả đều xuất hiện đơn giản, nhưng tôi vẫn gặp lỗi:Kết nối tweeter SES của Amazon không thành công

"Chữ ký yêu cầu mà chúng tôi tính không khớp với chữ ký bạn đã cung cấp. Hãy kiểm tra Khóa truy cập và phương thức ký nhận AWS bí mật để biết chi tiết".

Tôi đã tìm kiếm trực tuyến và hầu hết mọi người đều nói rằng đó là vì bạn có một khoảng trống ở cuối khóa của bạn hoặc đôi khi dấu gạch chéo có thể gây ra sự cố. Người cuối cùng không còn là vấn đề khi tôi tiếp tục tạo thông tin đăng nhập SMTP cho đến khi không có thông tin đăng nhập. Tôi đã tạo khoảng 10 thông tin đăng nhập SMTP ngay bây giờ, đã sao chép và dán AccessKey và SecretKey trong mỗi lần và tôi vẫn gặp phải lỗi này. Tôi cũng đã thử sử dụng http://email-smtp.us-west-2.amazonaws.com và vẫn gặp lỗi tương tự.

Đây là mã của tôi:

var nodemailer = require("nodemailer"); 
var transport = nodemailer.createTransport("SES", 
{ 
    AWSAccessKeyID: 'AKIA************', 
    AWSSecretKey: 'AqlwF*****************************', 
    SeviceUrl: 'http://email-smtp.us-east-1.amazonaws.com' 
}); 
nodemailer.sendMail({ 
    transport : transport, 
    sender : '[email protected]' , 
    to : '[email protected]', 
    subject : 'TEST', 
    html: '<p> Hello World </p>' 
}, function(error, response) 
{ 
    if(error){ console.log(error); } 
    else{ console.log("Message sent: " + response.message);} 
}); 

Bất cứ ai biết điều gì khác tôi có thể làm gì?

+0

Có may mắn với điều này không? Tôi vừa tạo ra một vấn đề về github của nhà phát triển. –

Trả lời

3

Điều này xảy ra khi bạn sử dụng thông tin xác thực SMTP AWS. Bạn nên tạo người dùng AIM và chỉ định chính sách như một người dùng bên dưới cho nó:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": ["ses:SendEmail", "ses:SendRawEmail"], 
     "Resource": "*" 
    } 
    ] 
} 
-1

Amazon ses cho phép bạn gửi email đến và từ địa chỉ email được đăng ký trên tài khoản Amazon aws. Bạn có thể thử xác minh chúng, có thể đó là vấn đề.

http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-email-addresses.html

này có một mô tả về cách xác minh.

CHỈNH SỬA: Các bước để vận chuyển ses noderer hoạt động bình thường. 1.Tải sẵn sàng vận chuyển ses cơ bản. Nó có thể được tạo ra trong cùng một cách bạn đã làm. (Mà bạn đã làm)

var nodemailer = require("nodemailer"); 
var transport = nodemailer.createTransport("SES", 
{ 
    AWSAccessKeyID: 'AKIA************', 
    AWSSecretKey: 'AqlwF*****************************', 
    SeviceUrl: 'http://email-smtp.us-east-1.amazonaws.com' 
}); 
mail={ 
    transport : transport, 
    sender : '[email protected]' , 
    to : '[email protected]', 
    subject : 'TEST', 
    html: '<p> Hello World </p>' 
}; 
  1. Để có được keyId truy cập và awsSecretKey từ tài khoản Amazon AWS của bạn. (Mà bạn đã làm .)

  2. Bây giờ, khi bạn đã thực hiện xong các bước trên, bạn sẽ có thể gửi thư đến địa chỉ email bạn đã đăng ký với tài khoản amazon ses của mình. (Liên kết xác minh sẽ được gửi đến tài khoản email bạn yêu cầu quyền truy cập và bạn cần nhấp vào chúng để xác minh). Liên kết để xác minh địa chỉ email thông qua tài khoản của bạn là liên kết tôi đã đăng ở trên.

mà, có vẻ như bạn chưa làm. Vì vậy, hãy đăng ký địa chỉ email bạn muốn gửi email đến (và cũng từ!) Và sử dụng các địa chỉ email đó trong địa chỉ của bạn đến và từ các mã.

Nếu bạn muốn gửi email đến địa chỉ email bạn chưa đăng ký, bạn cần yêu cầu quyền truy cập cao cấp. Nó có thể được tìm thấy trong tài khoản của bạn theo số quyền truy cập sản xuất. Tham chiếu đến trang đó là

https://docs.aws.amazon.com/ses/latest/DeveloperGuide/request-production-access.html

Hy vọng điều này giải quyết vấn đề của bạn. Và cảm ơn Rob vì mẹo.

Các vấn đề liên quan