Senden von Mail über den Node.js mit nodemailer nicht funktioniert
Habe ich eine einfache NodeJS-server (mit dem nodemailer Modul) lokal ( http://localhost:8080
), nur damit ich testen kann, ob der server tatsächlich E-Mails senden.
Wenn ich verstehen der SMTP-option korrekt (bitte korrigieren Sie mich, wenn ich falsch Liege), kann ich entweder versuchen, Sie zu senden eine E-Mail von meinem server zu einem E-Mail-Konto direkt, oder kann ich die E-Mail senden, noch mit Node.js aber über eine tatsächliche E-Mail-Konto (in diesem Fall meinem persönlichen Gmail-Konto), ich.e mithilfe von SMTP. Diese option erfordert, dass Sie mich anmelden, acount aus der Ferne via NodeJS.
Also in die server unten, die ich eigentlich versuche zu verwenden, NodeJs, senden Sie eine E-Mail von meinem persönlichen E-Mail-Konto auf meine persönliche E-Mail-Konto.
Hier ist mein einfaches server :
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport("SMTP", {
service: 'Gmail',
auth: {
user: '*my personal Gmail address*',
pass: '*my personal Gmail password*'
}
});
var http = require('http');
var httpServer = http.createServer(function (request, response)
{
transporter.sendMail({
from: '*my personal Gmail address*',
to: '*my personal Gmail address*',
subject: 'hello world!',
text: 'hello world!'
});
}).listen(8080);
Aber es funktioniert nicht. Ich habe eine E-Mail von Google zu sagen :
Google-Konto: Versuch blockiert
Wenn dies war Sie
Sie können wechseln, um eine app von Google wie Gmail, um auf Ihr Konto zuzugreifen (empfohlen), oder ändern
deine Einstellungen https://www.google.com/settings/security/lesssecureapps so, dass Ihr Konto nicht
mehr geschützt durch moderne Sicherheits-standards.
Konnte ich nicht finden, eine Lösung für das obige problem auf die nodemailer GitHub-Seite. Hat jemand eine Lösung/Vorschlag ?
Dank! 🙂
InformationsquelleAutor Sprout Coder | 2014-10-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist die Antwort in der Nachricht von google.
Gehen Sie zu : https://www.google.com/settings/security/lesssecureapps
legen Sie die Zugriff für weniger sichere apps Einstellung Aktivieren
Für den zweiten Teil des Problems, und in Reaktion auf
Verweise ich Sie auf die nodemailer github-Seite, und dieses Stück code :
Es unterscheidet sich leicht von deinem code, in der Tatsache, dass Sie haben :
nodemailer.createTransport("SMTP"
.Entfernen Sie die SMTP-parameter und es funktioniert (gerade getestet). Auch, warum die Kapselung in ein http-server? die folgenden Werke :
Er aktiviert, jetzt weiß ich mehr, die Benachrichtigung von Google, aber ich bekomme nicht die E-Mail-so funktioniert es immer noch nicht, fürchte ich..
versuchen Sie es mit einem anderen 'an' und 'von' - Adresse, ich hatte ein ähnliches Problem in der Vergangenheit mit gmail und jeden anderen Empfänger als mich arbeitete.
dass Niederlagen der Zweck der Zusendung von E-Mails von meiner Website zu meinem persönlichen Gmail-Konto. Erstellen Sie ein neues Google Mail-Konto, so dass ich benutzen kann, dass man als
from:
im nodemailer macht nicht viel Sinn, es muss einen anderen Weg um, die andere als so eine große "hack"Ich schlug vor, es mehr wie ein debugging-Verfahren, um zu sehen, ob das problem kommt von code oder von gmail.
InformationsquelleAutor xShirase
Für diejenigen, die wirklich wollen, zu verwenden OAuth2 /nicht machen wollen, die app "weniger sicher", Sie können dies erreichen, indem
SCOPES
var von['https://www.googleapis.com/auth/gmail.readonly']
zu['https://mail.google.com/']
im Schnellstart-js-Datei wie vorgeschlagen bei der Fehlersuche an https://nodemailer.com/smtp/oauth2/acessToken
,refreshToken
, undexpires
Parametern notwendig, die in den OAuth2 Beispiele für NodemailerDiese Weise können Sie verwenden OAuth2-Authentifizierung wie im folgenden
statt speichern Sie Ihr gmail Passwort im Klartext und das herunterstufen der Sicherheit auf Ihrem Konto.
Um es zu arbeiten, ich habe eine Kombination dieser Antwort-transport-definition (ohne Angabe accessToken und Ablauf) und die post verwendet den google-oauth-Spielplatz zu erhalten, der refresh-token: medium.com/@pandeysoni/...
ich hatte keine SCOPES Variablen in meinem gmail-nodejs-quickstart.json
InformationsquelleAutor ironicaldiction
ich habe gerade meine domain auf: smtp.gmail.com und es funktioniert. Ich bin mit einem VPS Vultr.
code:
mein ejs-template (e-mail.ejs):
Stellen Sie sicher, dass:
einen schönen Tag 😉
InformationsquelleAutor Mathias Gheno Azzolini
Brauchen Sie nur die App-Passwort für den google-auth, dann ersetzen Sie Ihr google-Passwort im code.
gehen Sie hier https://myaccount.google.com/apppasswords
Beispielcode:
InformationsquelleAutor kdgilang
Für debugging-Zwecke ist es nützlich, implementieren Sie eine callback-Funktion (nicht aber über die nodemailer github-Seite), die zeigt die Fehlermeldung (wenn es eine ist).
Es hat mir geholfen, mein problem zu lösen... Stellt sich heraus, neuere Versionen funktionieren nicht richtig:
"Sieht aus wie nodemailer 1.0 hat wichtige änderungen, so 0.7 muss stattdessen verwendet werden: http://www.nodemailer.com/
Nachricht gesendet nodemailer als der 12/17/15:
Nicht aktualisieren Nodemailer von 0.7 oder niedriger zu 1.0 gibt es wichtige änderungen. Sie können weiterhin die Verwendung des 0,7-branch so lange, wie Sie möchten. Finden Sie in der Dokumentation für 0.7 hier."
Ich fand diese Antwort hier
InformationsquelleAutor Maarten Meeusen
Während die oben genannten Antworten nicht funktionieren, möchte ich darauf hinweisen, dass Sie verringern die Sicherheit von Gmail durch den folgenden ZWEI Schritte.
SCHRITT #1
SCHRITT #2
InformationsquelleAutor Ahmad Awais
versuchen, diesen code seine Arbeit für mich.
Antwort:
InformationsquelleAutor KARTHIKEYAN.A
Und installieren smtp-Modul als Abhängigkeit:
npm install smtp
Gehen https://myaccount.google.com/lesssecureapps
und ändern Sie es AUF weil
Einige apps und Geräte verwenden, die weniger secure sign-in-Technologie, die dein Konto anfälliger. Sie können schalten Sie den Zugang für diese apps, die wir empfehlen, oder schalten Sie den Zugriff, wenn Sie Sie nutzen wollen, trotz der Risiken.
InformationsquelleAutor Azran Khan