как исправить ошибку: не удалось загрузить документ PDF после отправки вложениями в nodemailer? - PullRequest
0 голосов
/ 18 мая 2018

У меня есть приложение, которое отправляет письма с вложениями с помощью Nodemailer.Сначала я использую multer для сохранения вложения на сервере (работает хорошо), чтобы я мог передать путь файла к вложениям в маршруте nodemailer.Электронное письмо и вложение успешно отправлены, но вложение не удалось открыть / прочитать!

Вот маршрут узла почты:

 app.post("/send",  function(req,res){

var transporter = nodemailer.createTransport({
 service: 'gmail',
 auth: {
        user: 'my gmail',
        pass: 'my pass'
    }
});

var quotename = req.params.id;
console.log(quotename);

var storage = multer.diskStorage({
    destination: function (req,file, callback){
        callback(null, './uploads');
    },

    filename: function (req, file, callback){
        callback(null, "Q" + quotename + ".pdf");
    }
});

var upload = multer ({storage : storage}).single("myFile");


upload(req, res, function(err){
    if(err){
        console.log(err);
    } else {        

        const mailOptions = {
          from: req.body.fr, // sender address
          to: req.body.to, // list of receivers
          bcc: req.body.fr,
          subject: req.body.subject, // Subject line
          html: '<h4>Dear ' + req.body.contname+ '</h4>' + '<p>'+ 
         req.body.message + '</p>' + '<p>Kind Regards</p>' + 
           req.body.user,// html body
          attachments: [  
                {   // filename and content type is derived from path
                  filePath: '/constimator/uploads/Q' + quotename + '.pdf',
                },   
            ], 
        };

        transporter.sendMail(mailOptions, function (err, info) {
           if(err){
             return console.log(err);
           }else{
            console.log(req.body.myFile)
            res.redirect("/submitted"); }
          });
        });
     });

Я не знаю, связано ли это с filepath / pathвопрос или что-то еще.Я пробовал путь (вместо filePath), но та же проблема

1 Ответ

0 голосов
/ 23 мая 2018

Я решаю проблему самостоятельно после множества проб и ошибок, прибегая к помощи, размышляя.Для будущей ссылки и для людей с такой же проблемой я выкладываю свой ответ следующим образом:

Я изменил вложения к этому, и он работал отлично:

    {   // filename and content type is derived from path
                  filename: "Q" + quotename + ".pdf",
                  contentType: 'application/pdf',
                  path: '/constimator/uploads/Q' + quotename + '.pdf',
                },   
            ],

Это было оченьпросто, добавив имя файла, тип контента и изменив путь к файлу, проблема решена

...