E-Mails in Node.js senden? [geschlossen]


291

Ich habe kürzlich angefangen, meine erste node.js zu programmieren. Ich habe jedoch festgestellt, dass ich kein Kontaktformular erstellen kann, das direkt an meine E-Mail gesendet wird, da ich keine Module vom Knoten finde, die E-Mails senden können.

Kennt jemand eine E-Mail-Bibliothek von node.js oder ein Beispiel für ein Kontaktformularskript?


Kasse: AWS-SES kostenlose 62000 E-Mails für ec2-Apps.
Harvey

Antworten:


142

Node-Email-Templates sind eine viel bessere Option: https://github.com/niftylettuce/node-email-templates

Es unterstützt auch Windows


1
Dies hilft wirklich, dass die Dokumente ziemlich selbsterklärend sind.
NycCompSci


7
Das liegt daran, dass nodemailer.com jetzt in meinem Projekt verwendet wird. Es funktioniert einwandfrei. Nodejitsu hatte keine Probleme, E-Mails über die SMTP-Server von Google Mail zu senden.
Jascha

2
Ich habe in den letzten zwei Tagen einige Stunden damit verbracht, mich zum node-email-templatesLaufen zu bringen. Ich möchte es nur als Objekt verwenden, das ich initialisiere und später zum Senden verwende. Kann es nicht zum Laufen bringen. Aufgeben.
JCollum

Tutorial erwies sich als wertvoll (Nodejs Gamil OAuth2) masashi-k.blogspot.com.au/2013/06/…
eddyparkinson

162

Nodemailer ist im Grunde ein Modul, mit dem Sie beim Programmieren in Node.js problemlos E-Mails senden können. Unter http://www.nodemailer.com/ finden Sie einige gute Beispiele für die Verwendung des Nodemailer-Moduls . Die vollständige Anleitung zur Installation und Verwendung der Grundfunktionen von Nodemailer finden Sie in diesem Link.

Ich persönlich hatte Probleme bei der Installation von Nodemailer mit npm, daher habe ich nur die Quelle heruntergeladen. Es gibt Anweisungen sowohl für die npm-Installation als auch für das Herunterladen der Quelle.

Dies ist ein sehr einfaches Modul und ich würde es jedem empfehlen, der E-Mails mit Node.js senden möchte. Viel Glück!


2
nodemailer hat zuerst gearbeitet!
Capy

hat es sowohl mit SMTP als auch mit Amazon SES getestet, funktioniert für mich und hat es in das ConnectedSets-Framework integriert
Jean Vincent

Einfach, keine harte Arbeit für die Einrichtung. Ich habe gerade den Beispielcode kopiert, in meine Informationen geändert (lesen Sie mehr über SSL Secure) und es hat einfach funktioniert. ideal für einfache E-Mail-Absender!

Es ist jetzt ein kommerzielles Projekt, seien Sie also gewarnt.
Elliotrock

2
Diese Antwort sollte ein Beispiel enthalten
Abraham TS

65

Schauen Sie sich emailjs an

Nachdem ich viel Zeit damit verschwendet hatte, Nodemailer mit großen Anhängen arbeiten zu lassen, fand ich E-Mails und war seitdem glücklich.

Es unterstützt das Senden von Dateien mithilfe normaler Dateiobjekte und nicht mit großen Puffern, wie dies der Nodemailer erfordert. Bedeutet, dass Sie es verknüpfen können, z. B. um die Anhänge von einem HTML-Formular an den Mailer zu übergeben. Es unterstützt auch Warteschlangen.

Alles in allem keine Ahnung, warum nodejitsu ppl nodemailer als Basis für ihre Version gewählt hat, emailjs ist einfach viel weiter fortgeschritten.


3
Nach längerer Verwendung musste es gegabelt werden, um ein Problem zu beheben: Sofern nicht innerhalb des E-Mail-Sendeprozesses, würde das Ding keine Socket-Ereignisse verarbeiten und somit nach einiger Zeit im Leerlauf blockieren, da der Server die Verbindung schließen würde, aber dort war nichts, um das Ereignis zu verarbeiten und die internen Variablen zurückzusetzen. Die gegabelte Version finden Sie hier: https://github.com/silvioster/emailjs . Diese Version funktioniert seit geraumer Zeit stabil und hat keine Stände mehr.
Silvio

18
Update auf vorherigen Kommentar, der ursprüngliche Autor hat diesen Fehler behoben und einige andere auch, so dass Gabel nicht mehr benötigt wird. Die neueste Version sollte auf https://github.com/eleith/emailjs
silvio

1
nodemailer unterstützt auch Anhangs-Streams, nicht nur "riesige Puffer"
JoshuaDavid

57

Vollständiger Code zum Senden von E-Mails mit dem nodemailer-Modul

var mailer = require("nodemailer");

// Use Smtp Protocol to send Email
var smtpTransport = mailer.createTransport("SMTP",{
    service: "Gmail",
    auth: {
        user: "gmail_id@gmail.com",
        pass: "gmail_password"
    }
});

var mail = {
    from: "Yashwant Chavan <from@gmail.com>",
    to: "to@gmail.com",
    subject: "Send Email Using Node.js",
    text: "Node.js New world for me",
    html: "<b>Node.js New world for me</b>"
}

smtpTransport.sendMail(mail, function(error, response){
    if(error){
        console.log(error);
    }else{
        console.log("Message sent: " + response.message);
    }

    smtpTransport.close();
});

4
Ich fand es Nodemailer viel einfacher zu bedienen als node-email-templates. Vielleicht liegt es daran, dass ich nur versucht habe, einfache Klartext- / HTML-E-Mails zu senden, aber ich fand node-email-templates, dass viel mehr Einstellungen erforderlich waren, während Nodemaileres in buchstäblich 2 Minuten betriebsbereit war.
JVG

4
Anders als Google Mail? Wie können wir für unseren eigenen SMTP-Server konfigurieren?
Balaji Boggaram Ramanarayan

1
Ich erhalte diesen Fehler nach dem Kompilieren mit Webpack : TypeError: Cannot create property 'mailer' on string 'SMTP' at new Mail. Ich habe Beiträge wie diesen und dann diese Seite besucht, aber immer noch verloren.
user1063287

2
@ user1063287 Entfernen Sie einfach den Parameter "SMTP"
Bojan Radivojevic Bomber

1
Damit Sie sich dessen bewusst sind, können Sie die Absenderadresse nur in Ihre eigene E-Mail-Adresse ändern, die Sie als Authentifizierung verwendet haben. Google Mail erzwingt die Absenderadresse auf diese, damit die Berechtigung des Absenders bestätigt werden kann.
Nicholas Mordecai

25

@ JimBastards akzeptierte Antwort scheint veraltet zu sein. Ich habe sie mir angesehen und festgestellt, dass die Mailer-Bibliothek seit über 7 Monaten nicht mehr berührt wurde, mehrere Fehler aufgelistet sind und nicht mehr in npm registriert sind.

nodemailer scheint sicherlich die beste Option zu sein, aber die URL, die in anderen Antworten in diesem Thread angegeben ist, ist alle 404'ing.

nodemailer behauptet, einfache Plugins in Google Mail, Hotmail usw. zu unterstützen, und hat auch eine wirklich schöne Dokumentation.


9

Sie können jederzeit AlphaMail verwenden ( Offenlegung: Ich bin einer der Entwickler dahinter ).

Einfach mit NPM installieren :

npm install alphamail

Eröffnen Sie ein AlphaMail-Konto. Wenn Sie ein Token erhalten, können Sie mit dem AlphaMail-Dienst mit dem Senden beginnen.

var alphamail = require('alphamail');

var emailService = new alphamail.EmailService()
    .setServiceUrl('http://api.amail.io/v1/')
    .setApiToken('YOUR-ACCOUNT-API-TOKEN-HERE');

var person = {
    id: 1234,
    userName: "jdoe75",
    name: {
        first: "John",
        last: "Doe"
    },
    dateOfBirth: 1975
};

emailService.queue(new alphamail.EmailMessagePayload()
    .setProjectId(12345) // ID of your AlphaMail project (determines template, options, etc)
    .setSender(new alphamail.EmailContact("Sender Company Name", "from@example.com"))
    .setReceiver(new alphamail.EmailContact("John Doe", "to@example.org"))
    .setBodyObject(person) // Any serializable object
);

In der AlphaMail-Benutzeroberfläche ( Dashboard ) können Sie die Vorlage mit den von Ihnen gesendeten Daten bearbeiten:

<html>
    <body>
        <b>Name:</b> <# payload.name.last " " payload.name.first #><br>
        <b>Date of Birth:</b> <# payload.dateOfBirth #><br>

        <# if (payload.id != null) { #>
            <a href="http://company.com/sign-up">Sign Up Free!</a>
        <# } else { #>
            <a href="http://company.com/login?username=<# urlencode(payload.userName) #>">Sign In</a>
        <# } #>
    </body>
</html>

Die Vorlagen sind in Comlang geschrieben , einer einfachen Vorlagensprache, die speziell für E-Mails entwickelt wurde.


12
Alphamail ist jetzt offiziell tot. Sehr unglücklich - ich habe es genau wegen dieses Beitrags verwendet. Ich wünsche den Entwicklern alles Gute für ihr nächstes Unternehmen.
Masotime



3

npm hat einige Pakete, aber keines hat 1.0 erreicht. Beste Auswahl aus npm list mail:

email@0.2.2
mail@0.1.1
mailer@0.3.0


2

Kampagne ist eine umfassende Lösung zum Senden von E-Mails in Node und verfügt über eine sehr einfache API.

Sie instanziieren es so.

var client = require('campaign')({
  from: 'you@gmail.com'
});

Zum Versenden von E-Mails können Sie Mandrill verwenden , das kostenlos und fantastisch ist. Legen Sie einfach Ihren API-Schlüssel wie folgt fest:

process.env.MANDRILL_APIKEY = '<your api key>';

(Wenn Sie E-Mails mit einem anderen Anbieter senden möchten, überprüfen Sie die Dokumente.)

Wenn Sie dann eine E-Mail senden möchten, können Sie dies folgendermaßen tun:

client.sendString('<p>{{something}}</p>', {
  to: ['someone@gmail.com', 'someone.else@gmail.com'],
  subject: 'Some Subject',
  preview': 'The first line',
  something: 'this is what replaces that thing in the template'
}, done);

Das GitHub-Repo hat eine ziemlich umfangreiche Dokumentation .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.