2010-11-06 13 views
239

Ho iniziato di recente a programmare il mio primo nodo.js. Tuttavia, ho scoperto che non sono in grado di creare un modulo di contatto che invia direttamente alla mia email poiché non riesco a trovare alcun modulo dal nodo che sia in grado di inviare email.Inviare email in Node.js?

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

risposta

122

nodo-mail-templates è una scelta molto migliore: https://github.com/niftylettuce/node-email-templates

ha il supporto per le finestre così

+0

Questo aiuta molto la documentazione sono piuttosto auto esplicativo. – NycCompSci

+4

https://github.com/marak/node_mailer è deprecato. dovrebbero usare questo https://github.com/andris9/Nodemailer – user470370

+7

questo è perché il suo http://www.nodemailer.com/ ora Io lo utilizzo nel mio progetto, funziona bene, nodejitsu avuto problemi invio di posta tramite i server smtp di Gmail. – jascha

127

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

Personalmente ho avuto problemi nell'installazione di Nodemailer usando npm, quindi ho appena scaricato il codice sorgente. Ci sono istruzioni per l'installazione di npm e il download dell'origine.

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

+1

nodemailer ha funzionato all'inizio! – Capy

+0

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

+0

semplice, senza fatica per impostarlo. appena copiato il codice di esempio, modificato in informazioni personali (leggi su SSL sicuro) e ha funzionato. ottimo per mittente e-mail semplice! –

58

Partenza emailjs

Dopo sprecare un sacco di tempo a cercare di rendere il lavoro nodemailer con allegati di grandi dimensioni, emailjs e felice trovato da allora.

Supporta l'invio di file utilizzando normali oggetti File e non enormi buffer come richiesto da nodemailer. Significa che è possibile collegarlo a, 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 per basare la propria versione, emailjs è solo molto più avanzato.

+2

Dopo un uso prolungato, è stato necessario sostituirlo per risolvere un problema: a meno che all'interno del processo di invio della posta, la cosa non elaborasse gli eventi del socket, e quindi bloccata dopo un certo periodo di inattività, come il server chiudeva la connessione, ma non c'era nulla per elaborare l'evento e ripristinare le variabili interne. Puoi trovare la versione a forcella qui: [https://github.com/silvioster/emailjs] (https://github.com/silvioster/emailjs). Questa versione ha funzionato in modo stabile da parecchio tempo senza bancarelle. Aggiornamento – silvio

+18

al commento precedente, l'autore originale ha corretto quell'errore e alcuni altri, quindi la forcella non è più necessaria. la versione più recente dovrebbe essere su [https://github.com/eleith/emailjs](https://github.com/eleith/emailjs) – silvio

+1

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

22

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

nodemailer sicuramente sembra l'opzione migliore, tuttavia l'url fornito in altre risposte su questo thread sono tutti 404'ing.

nodemailer afferma di supportare semplici plug-in in gmail, hotmail, ecc. E ha anche una documentazione davvero bella.

8

È sempre possibile utilizzare AlphaMail (divulgazione: sono uno degli sviluppatori dietro di esso).

Basta installare con NPM:

npm install alphamail 

Iscriviti per un account AlphaMail. Ottieni un token e 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", "[email protected]")) 
    .setReceiver(new alphamail.EmailContact("John Doe", "[email protected]")) 
    .setBodyObject(person) // Any serializable object 
); 

E nella GUI AlphaMail (Dashboard) sarete 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, si tratta di un semplice linguaggio di template specificamente progettato per e-mail.

+7

Alphamail è ora ufficialmente morto. Molto sfortunato - ho iniziato a usarlo esattamente a causa di questo post. Auguriamo agli sviluppatori tutto il meglio nella loro prossima avventura. – masotime

2

campaign è una soluzione completa per l'invio di e-mail in nodo e viene fornito con un'API molto semplice.

L'istanza piace così.

var client = require('campaign')({ 
    from: '[email protected]' 
}); 

Per inviare messaggi di posta elettronica, è possibile utilizzare Mandrill, che è gratuito e impressionante. Basta impostare la chiave API, in questo modo:

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

(se si desidera inviare messaggi di posta elettronica utilizzando un altro provider, controllare la documentazione)

Poi, quando si desidera inviare una e-mail, è può fare in questo modo:

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

Il repo GitHub ha pretty extensive documentation.

36

codice completo per inviare e-mail utilizzando il modulo nodemailer

var mailer = require("nodemailer"); 

// Use Smtp Protocol to send Email 
var smtpTransport = mailer.createTransport("SMTP",{ 
    service: "Gmail", 
    auth: { 
     user: "[email protected]", 
     pass: "gmail_password" 
    } 
}); 

var mail = { 
    from: "Yashwant Chavan <[email protected]>", 
    to: "[email protected]", 
    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(); 
}); 
+2

Ho trovato 'Nodemailer' * way * più facile da usare rispetto a' node-email-templates'. Forse è perché stavo solo tentando di inviare email di base in formato testo/basic html, ma ho trovato che 'node-email-templates 'aveva bisogno di molto più impostazione, mentre' Nodemailer' era attivo e funzionante in soli 2 minuti. – Jascination

+1

Altro che gmail? Come possiamo configurare per il nostro server smtp? –

Problemi correlati