2014-06-26 27 views
6

Używam nodejs nodemailer do łączenia się z usługą e-mail Amazon SES. To wszystko wydaje się proste, ale ciągle dostaję błąd:Niepowodzenie połączenia z Amazon SES nodemailer

"Podpisana przez nas prośba o podpis nie zgadza się z podanym przez Ciebie podpisem Sprawdź klucz dostępu do AWS i metodę podpisu .. Szczegóły znajdziesz w dokumentacji serwisowej."

Już wyszukiwałem w Internecie, a większość osób twierdzi, że dzieje się tak, ponieważ na końcu klawisza Secrect jest miejsce, a czasami może to być przyczyną ukośnika. Ten ostatni nie jest już problemem, ponieważ ciągle tworzyłem dane uwierzytelniające SMTP, dopóki ich nie było. Stworzyłem już około 10 poświadczeń SMTP, za każdym razem kopiowałem i wklejałem AccessKey i SecretKey i nadal otrzymuję ten błąd. Próbowałem również używać http://email-smtp.us-west-2.amazonaws.com i nadal mam ten sam błąd.

Oto mój kod:

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);} 
}); 

Każdy wie, co jeszcze mogę zrobić?

+0

Czy to szczęście? Właśnie stworzyłem problem na github dewelopera. –

Odpowiedz

3

Dzieje się tak, gdy używa się poświadczeń AWS SMTP. Trzeba utworzyć użytkownika GG i przypisać zasadę jak poniżej niej:

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

Amazon ses pozwala na wysyłanie e-maili do i z adresów e-mail zarejestrowanego na koncie Amazon AWS. Możesz spróbować je zweryfikować, może to jest problem.

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

Ma to opis tego, jak je zweryfikować.

EDYCJA: Kroki dla transportu nodemailer ses do prawidłowego działania. 1.Pobierz podstawowy transporter ses. To może być tworzone w taki sam sposób, w jaki zrobił. (Co zrobiłeś)

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. Aby uzyskać identyfikatora klucza dostępu i awsSecretKey z Twojego Amazon AWS rachunku. (Co zrobiłeś .)

  2. Teraz, po wykonaniu powyższych czynności, będziesz mógł wysyłać wiadomości e-mail na adresy e-mail zarejestrowane na koncie Amazon. (Link weryfikacyjny zostanie wysłany na konto e-mail zażądać dostępu i musisz je kliknąć, aby zweryfikować). Link do weryfikacji adresów e-mail za pośrednictwem konta to link zamieszczony powyżej.

które, wygląda na to, że tego nie zrobiłeś. Zarejestruj więc adresy e-mailowe , do których chcesz wysyłać wiadomości e-mail do (a także od!) I używać tych adresów e-mail w adresach do i od tego kodu.

Jeśli chcesz wysyłać wiadomości e-mail na adresy e-mail, które nie zostały zarejestrowane, musisz poprosić o dostęp premium. Można go znaleźć na koncie pod numerem dostęp do produkcji. Odnośnik do tej strony jest

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

Nadzieja to rozwiąże problem. I dziękuję Rob za napiwek.