wake-up-neo.net

Versenden von Mails mit Anhang über NodeJS

Gibt es eine Bibliothek für NodeJS zum Senden von E-Mails mit Anhang?

21
sdepold

Ja, es ist ziemlich einfach, Ich benutze Nodemailer: npm install nodemailer --save

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

Dann lesen Sie eine Datei und senden Sie eine 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
        }

    }
});
48
Philippe

Versuchen Sie es mit Nodemailer, versuchen Sie es zum Beispiel:

  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    
        }   
        ]   
    };

schick endlich die nachricht

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

Hast du Nodemailer versucht?

Nodemailer unterstützt

  • Unicode, um beliebige Zeichen zu verwenden
  • HTML-Inhalte sowie Nur-Text-Alternative
  • Anhänge
  • Eingebettete Bilder in HTML
  • SSL (aber nicht STARTTLS)
3
bpierre

Ich persönlich benutze Amazon SES rest API oder Sendgrid rest API, was der konsequenteste Weg ist.

Wenn Sie einen einfachen Ansatz benötigen, verwenden Sie https://github.com/Marak/node_mailer und richten Sie Ihren eigenen SMTP-Server ein (oder einen, auf den Sie auch Zugriff haben).

http://blog.nodejitsu.com/sending-emails-in-node

3
kilianc

mailer-Paket verwenden ist sehr flexibel und einfach.

1
Krunal Goswami

Sie können auch die Amazon SES-Bibliothek von AwsSum verwenden:

Dort gibt es eine Operation namens SendEmail und SendRawEmail, von der letztere Anhänge über den Dienst senden können.

1
chilts

Eine andere alternative Bibliothek zum Ausprobieren ist emailjs

Ich habe einige der Vorschläge hier selbst ausprobiert, aber der laufende Code beschwert sich darüber, dass send_mail () und sendMail () undefiniert sind (obwohl ich einfach den Code mit geringfügigen Änderungen kopiere). Ich verwende Knoten 0.12.4 und npm 2.10.1. Ich hatte keine Probleme mit emailjs, die für mich einfach von der Stange gingen. Und es hat einen schönen Wrapper um Anhänge, so dass Sie ihn auf verschiedene Arten an Ihre Vorlieben anhängen können, verglichen mit den Nodemailer-Beispielen hier.

1
David

Sie können nodejs-phpmailer verwenden.

1
Anatoliy

Mit Express-Mailer versenden ( https://www.npmjs.com/package/express-mailer )

Senden Sie PDF -> 

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

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

Bild senden -> 

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')
               }   
             ]

Txt senden -> 

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

Nodemailer für alle Node-Mail-Anforderungen. Im Moment ist es nur das Beste: D

0
StewartJarod

sie können dafür die offizielle API von Google verwenden. Sie haben ein Paket für den Knoten für diesen Zweck bereitgestellt. Google Offizielle API

Ich habe einen Teil meines Codes angehängt, der für mich die Anlage getan hat

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

P. Dank an himanshu für seine intensive Forschung

0
ishwar rimal

Ich habe es nicht benutzt, aber nodemailer (npm install nodemailer) sieht so aus, wie Sie wollen.

0
Ari Porad