web-dev-qa-db-ja.com

NodeJSを介した添付ファイル付きメールの送信

添付ファイル付きのメールを送信するためのNodeJSのライブラリはありますか?

22
sdepold

はい、それはかなり簡単です、私は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
        }

    }
});
53
Philippe

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));       
    });
4
omolina

Nodemailer を試しましたか?

Nodemailerのサポート

  • Unicodeで任意の文字を使用
  • HTMLコンテンツとプレーンテキストの代替
  • 添付ファイル
  • HTMLの埋め込み画像
  • SSL(STARTTLSは除く)
3
bpierre

個人的に私は Amazon SES REST APIまたは Sendgrid REST APIを使用していますが、これは最も一貫した方法です。

低レベルのアプローチが必要な場合は https://github.com/Marak/node_mailer を使用し、独自のSMTPサーバー(またはアクセス権のあるサーバー)をセットアップします

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

3
kilianc

非常に柔軟で簡単なメーラーパッケージを使用します。

1
Krunal Goswami

AwsSumのAmazon SESライブラリを使用することもできます。

そこではSendEmailとSendRawEmailと呼ばれる操作があり、後者はサービスを介して添付ファイルを送信できます。

1
chilts

試す別の代替ライブラリは emailjs です。

私はここでいくつかの提案を試してみましたが、コードを実行すると、send_mail()とsendMail()が未定義であると不平を言われました(コードを少しコピーして貼り付けただけですが)。ノード0.12.4とnpm 2.10.1を使用しています。私はemailjsには問題がなく、すぐに使えるようになりました。そして、添付ファイルの周りに素敵なラッパーがあるので、ここのnodemailerの例と比較して、好みに応じてさまざまな方法で簡単に添付できます。

1
David

nodejs-phpmailer を使用できます

1
Anatoliy

エクスプレスメーラーで送信( 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!'
               }   
             ]
0
Luis Sanchez

Nodejsメールに必要なNodemailer。現時点で最高です:D

0
StewartJarod

これにはgoogleの公式APIを使用できます。彼らはこの目的のためにノードのパッケージを提供しています。 Google公式API

アタッチメントを実行するコードの一部をアタッチしました

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

追伸: himansh についての熱心な研究に感謝

0
ishwar rimal

[email protected]の最新バージョンでは回答が更新されていません

ここで更新された例:

const fs = require('fs')
const path = require('path')

const nodemailer = require('nodemailer')
const transport = nodemailer.createTransport({
  Host: 'smtp.libero.it',
  port: 465,
  secure: true,
  auth: {
    user: '[email protected]',
    pass: 'HelloWorld'
  }
})


fs.readFile(path.join(__dirname, 'test22.csv'), function (err, data) {
  transport.sendMail({
    from: '[email protected]',
    to: '[email protected]',
    subject: 'Attachment',
    text: 'mail content...', // or body: field
    attachments: [{ filename: 'attachment.txt', content: data }]
  }, function (err, success) {    
    if (err) {
      // Handle error
      console.log(err)
      return
    }
    console.log({ success })
  })
})
0
Manuel Spigolon

私はそれを使用していませんが、nodemailer(npm install nodemailer)はあなたが望むもののように見えます。

0
Ari Porad