2014-06-26 6 views
6

Ich benutze nodejs nodemailer, um eine Verbindung zum Amazon SES E-Mail-Dienst herzustellen. Alles erscheint einfach, aber ich erhalte den Fehler:Amazon SES-Knotenmailer-Verbindung fehlgeschlagen

"Die von uns berechnete Anforderungssignatur stimmt nicht mit der von Ihnen angegebenen Signatur überein. Überprüfen Sie den geheimen AWS-Zugriffsschlüssel und die Signaturmethode. Weitere Informationen finden Sie in der Servicedokumentation."

Ich habe bereits online gesucht und die meisten Leute sagen, dass es ist, weil Sie ein Leerzeichen am Ende Ihrer Secrect-Taste haben oder manchmal der Schrägstrich das Problem verursacht. Der letzte ist kein Problem mehr, da ich weiterhin SMTP-Anmeldeinformationen erstellt habe, bis es keine gab. Ich habe jetzt ungefähr 10 SMTP-Anmeldeinformationen erstellt, den AccessKey und den SecretKey jedes Mal kopiert und eingefügt und erhalte immer noch diesen Fehler. Ich habe auch versucht, mit http://email-smtp.us-west-2.amazonaws.com und immer noch den gleichen Fehler.

Hier ist mein Code:

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

Wer weiß, was ich sonst noch tun kann?

+0

Haben Sie Glück dabei? Ich habe gerade ein Problem auf dem Github von Entwickler erstellt. –

Antwort

3

Dies geschieht, wenn Sie AWS-SMTP-Anmeldeinformationen verwenden. Man sollte einen AIM Benutzer erstellen und eine Politik wie die zuweisen unten, um es:

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

Amazon ses kann E-Mails an und von den E-Mail-Adressen auf amazon aws regis senden. Sie können versuchen, sie zu überprüfen, vielleicht ist das das Problem.

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

Dies hat eine Beschreibung, wie sie zu überprüfen.

EDIT: Die Schritte für den Transport von nodemailer ses funktionieren ordnungsgemäß. 1.Stellen Sie den Basis-Ses-Transporter bereit. Es können Sie taten in der gleichen Art und Weise erstellt werden. (Die Sie haben)

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. Um den Zugang keyId und awsSecretKey von Ihrem amazon aws Konto. (Was du getan hast .)

  2. Sobald Sie mit den obigen Schritten fertig sind, können Sie E-Mails an die E-Mail-Adressen senden, die Sie bei Amazon registriert haben (ein Bestätigungslink wird an das von Ihnen angegebene E-Mail-Konto gesendet) Zugriff anfordern für und Sie müssen auf sie klicken, um zu überprüfen). Der Link zum Bestätigen von E-Mail-Adressen über Ihr Konto ist der oben angegebene Link.

was scheint, dass Sie nicht getan haben. Registrieren Sie also die E-Mail-Adressen , an die Sie E-Mails senden möchten (und auch von!), Und verwenden Sie diese E-Mail-Adressen in Ihren An-und Ab-Adressen des Codes.

Wenn Sie E-Mails an E-Mail-Adressen senden möchten, die Sie nicht registriert haben, müssen Sie einen Premium-Zugriff anfordern. Es kann in Ihrem Konto unter Produktionszugang gefunden werden. Ein Verweis auf diese Seite ist

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

Hoffnung das Ihr Problem löst. Und danke Rob für den Tipp.