2011-01-12 15 views

risposta

42

Sì, è abbastanza semplice, io uso nodemailer: npm install nodemailer --save

var mailer = require('nodemailer'); 
mailer.SMTP = { 
    host: 'host.com', 
    port:587, 
    use_authentication: true, 
    user: '[email protected]', 
    pass: 'xxxxxx' 
}; 

Poi leggere un file e inviare una e-mail:

fs.readFile("./attachment.txt", function (err, data) { 

    mailer.send_mail({  
     sender: '[email protected]', 
     to: '[email protected]', 
     subject: 'Attachment!', 
     body: 'mail content...', 
     attachments: [{'filename': 'attachment.txt', 'content': data}] 
    }), function(err, success) { 
     if (err) { 
      // Handle error 
     } 

    } 
}); 
+1

Manca un '})' nell'ultima riga. Non posso modificare direttamente perché è inferiore a 6 caratteri ... –

+0

Esiste un tipo per le proprietà degli allegati. "contenuti" non è corretto. dovrebbe essere "contenuto". – PyroJoke

+0

@PyroJoke risolto, grazie per averlo sollevato – Philippe

1

È possibile utilizzare nodejs-phpmailer

+0

egli usa node.js , perché consigliarlo di usare una soluzione php? – zobi8225

+0

Penso che usi node.js ma sia basato su php, un po 'lento e cattivo .. Ma penso che faccia il lavoro. –

3

Hai provato Nodemailer?

Nodemailer supports

  • Unicode to use any characters
  • HTML contents as well as plain text alternative
  • Attachments
  • Embedded images in HTML
  • SSL (but not STARTTLS)
1

è anche possibile utilizzare libreria di Amazon SES di AwsSum:

Lì, c'è un'operazione chiamata SendEmail e SendRawEmail, l'ultima delle quali in grado di inviare gli allegati tramite il servizio.

+2

Non dimenticare di rivelare completamente la tua affiliazione con i progetti che hai consigliato :) – Mike

+1

http://stackoverflow.com/ faq # promotion – Mike

4

Prova con nodemailer, per esempio provate questo:

var nodemailer = require('nodemailer'); 
    nodemailer.SMTP = { 
    host: 'mail.yourmail.com', 
    port: 25, 
    use_authentication: true, 
    user: '[email protected]', 
    pass: 'somepasswd' 
    }; 

    var message = { 
     sender: "[email protected]",  
     to:'[email protected]', 
     subject: '',  
     html: '<h1>test</h1>', 
     attachments: [ 
     { 
      filename: "somepicture.jpg",  
      contents: new Buffer(data, 'base64'), 
      cid: cid  
     } 
     ] 
    }; 

infine, inviare il messaggio

nodemailer.send_mail(message, 
     function(err) { 
     if (!err) { 
      console.log('Email send ...'); 
     } else console.log(sys.inspect(err));  
    }); 
+0

ReferenceError: data non definita - Mi manca una richiesta? –

0

Nodemailer per tutti i bisogni di posta nodejs. È semplicemente il migliore al momento: D

1

utilizzare il pacchetto di posta elettronica è molto flessibile e facile.

0

Non l'ho usato ma nodemailer (npm install nodemailer) sembra quello che vuoi.

1

Un'altra libreria alternativa da provare è emailjs.

Ho dato qui alcuni suggerimenti, ma il codice di esecuzione si è lamentato del fatto che send_mail() e sendMail() non sono definiti (anche se copio semplicemente il codice incollato & con piccole modifiche). Sto usando il nodo 0.12.4 e npm 2.10.1. Non ho avuto problemi con emailjs, che ha funzionato bene per me. E ha un bel wrapper attorno agli allegati, quindi puoi allegarlo in vari modi a tuo piacimento e facilmente, rispetto agli esempi di nodemailer qui.

0

Invia con espresso-mailer (https://www.npmjs.com/package/express-mailer)

Invia PDF ->

var pdf="data:application/pdf;base64,JVBERi0xLjM..etc" 

attachments: [ { filename: 'archive.pdf', 
        contents: new Buffer(pdf.replace(/^data:application\/(pdf);base64,/,''), 'base64') 
       } 
      ] 

Invia Immagine ->

var img = 'data:image/jpeg;base64,/9j/4AAQ...etc' 
attachments: [ 
      { 
       filename: 'myImage.jpg', 
       contents: new Buffer(img.replace(/^data:image\/(png|gif|jpeg);base64,/,''), 'base64') 
       } 
      ] 

Send txt ->

attachments: [ 
      { 
       filename: 'Hello.txt', 
       contents: 'hello world!' 
       } 
      ] 
+0

Puoi anche fornire un codice di esempio minimo. In questo modo la risposta non è molto utile dato che non ho idea di dove posizionare gli allegati. – select

0

puoi utilizzare la versione ufficiale API di google per questo. Hanno fornito il pacchetto per il nodo per questo scopo. google official api

Ive ha attaccato parte del mio codice che ha fatto la cosa attaccamento per me

function makeBody(subject, message) { 
 
var boundary = "__myapp__"; 
 
var nl = "\n"; 
 
var attach = new Buffer(fs.readFileSync(__dirname + "/../"+fileName)) .toString("base64"); 
 
// console.dir(attach); 
 
var str = [ 
 

 
     "MIME-Version: 1.0", 
 
     "Content-Transfer-Encoding: 7bit", 
 
     "to: " + receiverId, 
 
     "subject: " + subject, 
 
     "Content-Type: multipart/alternate; boundary=" + boundary + nl, 
 
     "--" + boundary, 
 
     "Content-Type: text/plain; charset=UTF-8", 
 
     "Content-Transfer-Encoding: 7bit" + nl, 
 
     message+ nl, 
 
     "--" + boundary, 
 
     "--" + boundary, 
 
     "Content-Type: Application/pdf; name=myPdf.pdf", 
 
     'Content-Disposition: attachment; filename=myPdf.pdf', 
 
     "Content-Transfer-Encoding: base64" + nl, 
 
     attach, 
 
     "--" + boundary + "--" 
 

 
    ].join("\n"); 
 

 
    var encodedMail = new Buffer(str).toString("base64").replace(/\+/g, '-').replace(/\//g, '_'); 
 
    return encodedMail; 
 
}

PS grazie alla himanshu per la sua intensa ricerca su questo