web-dev-qa-db-ja.com

Node.jsとNodemailer:PDFドキュメントをメールに添付できますか?

Nodemailerとnode.jsを使用してPDFドキュメントを添付したいのですが、nodemailerを使用した添付ファイルの例は、.txtファイルのみです( ここ )。

PDFドキュメントの添付ファイルがnodemailerでサポートされているかどうか誰かが知っていますか?

最初はPDFを添付できるようですが、メールで届いたPDFファイルは破損しているようです(画像を参照)。

enter image description here

コード:(Maheshの回答から採用)

fs.readFile('/filePath/fileName.pdf', function (err, data) {
if (err) throw err;                                                  
var mailOptions = {
    from: 'Test <[email protected]>', // sender address                                   
    to: 'toPersonName <[email protected]>', // list of receivers                                 
    subject: 'Attachment', // Subject line                                                 
    text: 'Hello world attachment test', // plaintext body                                                 
    html: '<b>Hello world attachment test HTML</b>', // html body                                               
    attachments: [
        {
            filename: 'fileName.pdf',                                         
            contentType: 'application/pdf'
        }]
};

// send mail with defined transport object                                                 
transporter.sendMail(mailOptions, function(error, info){
    if(error){
        return console.log(error);
    }
    console.log('Message sent: ' + info.response);
});
console.log(data);
});

端末の応答:

<Buffer 25 50 44 46 2d 31 2e 33 0a 25 c4 e5 f2 e5 eb a7 f3 a0 d0 c4 c6 0a 34 20 30 20 6f 62 6a 0a 3c 3c 20 2f 4c 65 6e 67 74 68 20 35 20 30 20 52 20 2f 46 69 ... >
Message sent: 250 2.0.0 OK 1443026036 hq8sm3016566pad.35 - gsmtp
9
Val

はい、できます。添付しようとしているファイルのパスを追加する必要があります。

transporter.sendMail({
  from: '[email protected]',
  to: '[email protected]',
  subject: 'An Attached File',
  text: 'Check out this attached pdf file',
  attachments: [{
    filename: 'file.pdf',
    path: 'C:/Users/Username/Desktop/somefile.pdf',
    contentType: 'application/pdf'
  }],
  function(err, info) {
    if (err) {
      console.error(err);
      res.send(err);
    } else {
      console.log(info);
      res.send(info);
    }
  }
});
14
Vishnu

はい、PDFドキュメントを電子メールに添付できます。パスを使用して、現在のファイルから添付したいpdfまでたどることができるパスについてです。これは私にとってはうまくいきます。

// node-mailer.js
const nodemailer = require('nodemailer');
const path = require('path');
...
const mailOptions = {
    from: '',
    to: '',
    subject: '',
    text: '',
    html: '',
    attachments: [
        {
            filename: 'file-name.pdf', // <= Here: made sure file name match
            path: path.join(__dirname, '../output/file-name.pdf'), // <= Here
            contentType: 'application/pdf'
        }
    ]
};

transporter.sendMail(mailOptions, function(error, cb) {

});
  • 私のファイル構造/ツリー:
├── package-lock.json
├── package.json
├── output
│   └── file-name.pdf
├── routes
│   └── node-mailer.js <= Current file
└── server.js

これが誰かに役立つことを願っています:)ハッピーコーディング!

0
Mr. Dang