Подтвердить что ты не робот

Отправка писем со вложением через NodeJS

Есть ли библиотека для NodeJS для отправки писем с вложением?

С наилучшими пожеланиями, sdepold

4b9b3361

Ответ 1

Да, это довольно просто, Я использую nodemailer: npm install nodemailer --save

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

Затем прочитайте файл и отправьте электронное письмо:

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
        }

    }
});

Ответ 2

Попробуйте с помощью nodemailer, например, попробуйте следующее:

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

наконец, отправьте сообщение

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

Ответ 3

Вы пробовали Nodemailer?

Поддержка Nodemailer

  • Юникод для использования любых символов
  • Содержимое HTML, а также альтернатива обычного текста
  • Приложения
  • Встроенные изображения в HTML
  • SSL (но не STARTTLS)

Ответ 4

Лично я использую API поддержки Amazon SES или Sendgrid rest API, который является наиболее последовательным способом его выполнения.

Если вам нужен подход низкого уровня, используйте https://github.com/Marak/node_mailer и настройте собственный SMTP-сервер (или тот, у которого есть доступ)

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

Ответ 6

Вы также можете использовать библиотеку SES AwsSum Amazon:

Там есть операция SendEmail и SendRawEmail, последняя из которых может отправлять вложения через службу.

Ответ 7

использовать почтовый пакет очень гибко и легко.

Ответ 8

Другая альтернативная библиотека, которую нужно попробовать, - emailjs.

Я дал некоторые из предложений здесь, попробовав себя, но запущенный код жаловался, что send_mail() и sendMail() - это undefined (хотя я просто копировал и вставлял код с небольшими изменениями). Я использую node 0.12.4 и npm 2.10.1. У меня не было проблем с emailjs, которые просто отработали для меня полки. И у этого есть хорошая обертка вокруг вложений, так что вы можете прикрепить его различными способами по своему вкусу и легко, по сравнению с примерами nodemailer.

Ответ 9

Nodemailer для любых потребностей почты nodejs. Это только лучшее на данный момент: D

Ответ 10

Я не использовал его, но nodemailer (npm install nodemailer) выглядит так, как вы хотите.

Ответ 11

Отправить С помощью экспресс-почты (https://www.npmjs.com/package/express-mailer)

Отправить PDF →

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

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

Отправить изображение →

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 →

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

Ответ 12

вы можете использовать официальный api для Google. Для этой цели они предоставили пакет для node. официальный google

Я прикрепил часть своего кода, который сделал для меня приложение для прикрепления

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