2014-10-07 3 views
2

Я создал следующую функцию с NodeMailer которая, кажется, диспетчерской электронной почту без проблем («Сообщение отправлено» уведомления в консоли и электронной почте, полученной) за исключением того, что нет ни одного вложения с любыми отосланными письмами!NodeMailer вложение не отправка с SMTP/Gmail

Пробовал с кучей адресов электронной почты (Gmail, Google Apps, Hotmail), но все они делают то же самое. Пожалуйста помоги!

var sendWithAttachment = function(userMail, subject, html, attachment_path, cb){ 
    var smtpTransport = nodemailer.createTransport("SMTP",{ 
     service: "Gmail", 
     auth: { 
      user: "[email protected]", 
      pass: "password" 
     } 
    }); 

    var mailOptions = { 
     from: "Labs <[email protected]>", 
     to: userMail, 
     subject: subject || "[blank]" 
     html: html || "[none]" 
     generateTextFromHTML: true, 
     attachments: [ 
      { // filename and content type is derived from path 
       path: attachment_path 
      }, 
      { // utf-8 string as an attachment 
       filename: 'check.txt', 
       content: 'checking that some attachments work...' 
      }, 
     ], 
    }; 

    smtpTransport.sendMail(mailOptions, function(error, response){ 
     if(error){ 
      console.log(error); 
      cb(error, null); 
     }else{ 
      console.log("Message sent: " + response.message); 
      cb(null, response); 
     } 
     smtpTransport.close(); 
    }); 
}; 
+0

использование одного объекта в приложениях, либо 'path' или другое. Поскольку путь «Путь» - «путь к файлу или URL-адресу (разрешен uris также разрешен), если вы хотите передать файл, а не включать его (лучше для больших вложений)». Поэтому удалите эту часть и попробуйте ... – Ravi

+0

Документы говорят, что вы можете включить несколько вложений, подобных этому. Я попробовал только одно приложение, и проблема такая же ... –

+0

Если вы достигли какого-либо прогресса в этом, отправьте свой ответ, поскольку я столкнулся с аналогичной проблемой. Приложение просто не отправляет, но я получаю письмо. –

ответ

2

Я решил эту проблему путем переименования content в contents. Я читал самые современные документы для более новой версии nodemailer. Вы можете прочитать документацию для версий менее 1,0 здесь: https://github.com/andris9/Nodemailer/blob/0.7/README.md

+0

Аналогично, 'path' парам в 1.0' filePath' в старых версиях –

0
var mailOptions = { 
    ... 
    attachments: [ 
     { // utf-8 string as an attachment 
      filename: 'text1.txt', 
      content: 'hello world!' 
     }, 
     { // binary buffer as an attachment 
      filename: 'text2.txt', 
      content: new Buffer('hello world!','utf-8') 
     }, 
     { // file on disk as an attachment 
      filename: 'text3.txt', 
      path: '/path/to/file.txt' // stream this file 
     }, 
     { // filename and content type is derived from path 
      path: '/path/to/file.txt' 
     }, 
     { // stream as an attachment 
      filename: 'text4.txt', 
      content: fs.createReadStream('file.txt') 
     }, 
     { // define custom content type for the attachment 
      filename: 'text.bin', 
      content: 'hello world!', 
      contentType: 'text/plain' 
     }, 
     { // use URL as an attachment 
      filename: 'license.txt', 
      path: 'https://raw.github.com/andris9/Nodemailer/master/LICENSE' 
     }, 
     { // encoded string as an attachment 
      filename: 'text1.txt', 
      content: 'aGVsbG8gd29ybGQh', 
      encoding: 'base64' 
     }, 
     { // data uri as an attachment 
      path: 'data:text/plain;base64,aGVsbG8gd29ybGQ=' 
     } 
    ] 
} 
4

Это вопрос в документации nodemailer в. Изменение «пути» с помощью «filePath» для определения пути и изменения «содержимого» на «содержимое» для текста. Работал для меня.

var mailOptions = { 
    ... 
    attachments: [ 
     { // utf-8 string as an attachment 
      filename: 'text1.txt', 
      contents: 'hello world!' 
     }, 
     { // utf-8 string as an attachment 
      filename: 'text1.txt', 
      filePath: 'text.txt' 
     }, 
    ] 
} 
+0

Изменение «путь» с «Filepath» работал для меня .. Спасибо :) –

+0

Приглашаем Вас :) –

0

// Простой код на nodemailer отправить по электронной почте с приложением

var smtpTransport = nodemailer.createTransport("SMTP",{ 
service: "Gmail", 
auth: { 
     user: "[email protected]", 
     pass: "passport" 
    } 
}); 

fs.readFile("path/logfile.txt", function (err, data) { 
    //creating simple built-in templating 
    var templateSender = { 
     from: 'MK <[email protected]>', // sender address 
     to: '[email protected]', // list of receivers 
     subject: "Attachment", // Subject line 
     body: 'mail content...', 
     attachments: [{ filepath: 'path/logfile.txt', filename: 'logfile.txt', contents: data}] 
    }; 

    // send mail with defined transport object 
    smtpTransport.sendMail(templateSender, function(error, success){ 
     if(error){ 
      return console.log(error); 
     }   
     smtpTransport.close(); 
    }); 

});