Invio di e-mail in Node.js? [chiuso]


291

Di recente ho iniziato a programmare il mio primo node.js. Tuttavia, ho scoperto che non sono in grado di creare un modulo di contatto che invia direttamente alla mia e-mail poiché non riesco a trovare moduli dal nodo in grado di inviare e-mail.

Qualcuno sa di una libreria di posta elettronica node.js o di un esempio di script del modulo di contatto?


Acquista: e - mail gratuite 62000 AWS-SES per app ec2.
Harvey,

Risposte:


142

node-email-templates è un'opzione molto migliore: https://github.com/niftylettuce/node-email-templates

ha anche il supporto per windows


1
Questo aiuta davvero i documenti a essere piuttosto autoesplicativi.
NycCompSci,


7
questo perché nodemailer.com ora lo sto usando nel mio progetto, funziona bene, nodejitsu non ha avuto problemi a inviare posta attraverso i server smtp di Gmail.
jascha,

2
Ho trascorso alcune ore negli ultimi due giorni cercando di alzarmi node-email-templatese correre. Voglio solo usarlo come un oggetto che ho inizializzato e poi utilizzare per inviare. Non riesco a farlo funzionare. Arrendersi.
jcollum,

Il tutorial si è rivelato prezioso (Nodejs Gamil OAuth2) masashi-k.blogspot.com.au/2013/06/…
eddyparkinson

162

Nodemailer è fondamentalmente un modulo che ti dà la possibilità di inviare facilmente e-mail durante la programmazione in Node.js. Ci sono alcuni ottimi esempi di come utilizzare il modulo Nodemailer su http://www.nodemailer.com/ . Le istruzioni complete su come installare e utilizzare le funzionalità di base di Nodemailer sono incluse in questo link.

Personalmente ho avuto problemi con l'installazione di Nodemailer usando npm, quindi ho appena scaricato il sorgente. Ci sono istruzioni sia per l'installazione di npm che per il download del sorgente.

Questo è un modulo molto semplice da usare e lo consiglierei a chiunque voglia inviare e-mail usando Node.js. In bocca al lupo!


2
nodemailer ha funzionato all'inizio!
Capy

testato con SMTP e Amazon SES, funziona per me, integrato nel framework ConnectedSets
Jean Vincent

semplice, nessun duro lavoro per l'impostazione. ho appena copiato il codice di esempio, modificato nelle mie informazioni (leggi su SSL sicuro) e ha funzionato. ottimo per un semplice mittente e-mail!

È un progetto commerciale ora, quindi state attenti.
elliotrock

2
Questa risposta dovrebbe includere un esempio
Abraham TS,

65

Dai un'occhiata a emailjs

Dopo aver perso molto tempo nel tentativo di far funzionare nodemailer con allegati di grandi dimensioni, ho trovato emailjs e sono felice da allora.

Supporta l'invio di file utilizzando normali oggetti File e non enormi buffer come richiede nodemailer. Significa che puoi collegarlo, ad esempio, formidabile per passare gli allegati da un modulo HTML al mailer. Supporta anche l'accodamento ..

Tutto sommato, non ho idea del perché nodejitsu ppl abbia scelto nodemailer su cui basare la propria versione, emailjs è solo molto più avanzato.


3
Dopo un uso prolungato, è stato necessario rovesciarlo per risolvere un problema: a meno che all'interno del processo di invio della posta, la cosa non elaborasse gli eventi socket, e quindi si bloccasse dopo un po 'di tempo inattivo, poiché il server avrebbe chiuso la connessione, ma lì non era nulla per elaborare l'evento e ripristinare le variabili interne. Puoi trovare la versione biforcuta qui: https://github.com/silvioster/emailjs . Questa versione funziona da molto tempo ormai senza bancarelle.
silvio,

18
aggiornamento al commento precedente, l'autore originale ha corretto quel bug e anche alcuni altri, quindi fork non è più necessario. la versione più recente dovrebbe essere su https://github.com/eleith/emailjs
silvio

1
nodemailer supporta anche i flussi di allegati, non solo "enormi buffer"
JoshuaDavid,

57

Codice completo per l'invio di e-mail tramite il modulo nodemailer

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
Ho trovato Nodemailer molto più facile da usare di node-email-templates. Forse è perché stavo solo cercando di inviare e-mail di base in HTML / HTML di base, ma ho trovato la node-email-templatesnecessità di molto più impostazione, mentre Nodemailerera attivo e funzionante in letteralmente 2 minuti.
JVG

4
Oltre a Gmail? Come possiamo configurare per il nostro server SMTP?
Balaji Boggaram Ramanarayan,

1
Ottengo questo errore dopo la compilazione con webpack: TypeError: Cannot create property 'mailer' on string 'SMTP' at new Mail. Sono andato a post come questo e poi questa pagina ma ho ancora perso.
user1063287

2
@ user1063287 Basta rimuovere il parametro "SMTP"
Bojan Radivojevic Bomber

1
Solo per questo sei consapevole, non puoi cambiare l'indirizzo da a qualcosa di diverso dal tuo indirizzo email che hai usato come autenticazione. Gmail impone l'indirizzo da a quello in modo che possa confermare l'autorità del mittente.
Nicholas Mordecai,

25

@La risposta accettata di JimBastard sembra essere datata, ho dato un'occhiata e quel messaggio di posta elettronica non è stato toccato per oltre 7 mesi, ha diversi bug elencati e non è più registrato in npm.

nodemailer sembra certamente l'opzione migliore, tuttavia l'URL fornito in altre risposte su questo thread è tutto 404 '.

nodemailer afferma di supportare facili plug-in in Gmail, Hotmail, ecc. e ha anche una documentazione davvero bella.


9

Puoi sempre usare AlphaMail ( divulgazione: sono uno degli sviluppatori dietro di esso ).

Installa con NPM :

npm install alphamail

Iscriviti per un account AlphaMail. Ottieni un token, quindi puoi iniziare a inviare con il servizio AlphaMail.

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

E nella GUI di AlphaMail ( Dashboard ) sarai in grado di modificare il modello con i dati che hai inviato:

<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>

I modelli sono scritti in Comlang , è un semplice linguaggio di template appositamente progettato per le e-mail.


12
Alphamail è ora ufficialmente morto. Molto sfortunato - ho iniziato a usarlo proprio per questo post. Auguro agli sviluppatori tutto il meglio per la loro prossima avventura.
masotime



3

npm ha alcuni pacchetti, ma nessuno ha ancora raggiunto la 1.0. Le migliori scelte tra npm list mail:

email@0.2.2
mail@0.1.1
mailer@0.3.0


2

La campagna è una soluzione completa per l'invio di e-mail in Node e include un'API molto semplice.

L'istanza in questo modo.

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

Per inviare e-mail, puoi usare Mandrill , che è gratuito e fantastico. Basta impostare la chiave API, in questo modo:

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

(se desideri inviare e-mail utilizzando un altro provider, controlla i documenti)

Quindi, quando si desidera inviare un'e-mail, è possibile farlo in questo modo:

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

Il repository GitHub ha una documentazione piuttosto estesa .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.