2015-08-31 2 views
1

В настоящее время я могу отправить электронную почту в Node.js с использованием коды по линиям:Отправить по электронной почте с приложением изображения в node.js

var nodemailer = require("nodemailer"); 

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

smtpTransport.sendMail({ 
    from: "My Name <[email protected]>", // sender address 
    to: "Your Name <[email protected]>", // comma separated list of receivers 
    subject: "Hello ✔", // Subject line 
    text: "Hello world ✔" // plaintext body 
}, function(error, response){ 
    if(error){ 
     console.log(error); 
    }else{ 
     console.log("Message sent: " + response.message); 
    } 
}); 

Как я могу отправить вложение загруженного изображения из html форму в этом письме? Кроме того, могу ли я отправить изображение по электронной почте, не загружая его в службу? Если нет, все в порядке. Это мой HTML форма:

<form id="mainForm"> 
    <input type="file" id="fileUpload"> 
    <input type="submit" id="submit" name="submit"> 
</form> 

Как я могу взять файл и включить его в электронной почте я отправить с помощью Node.js?

+0

Возможный дубликат [Как подключить файл к электронному письму с nodemailer] (http://stackoverflow.com/questions/21934667/how-to-attach-file-to- a-email-with-nodemailer) – royhowie

+0

Не только потому, что мне нужно загрузить изображение из html-формы – thenodecoder

+0

Сохраните изображение, затем прикрепите его, как описано в связанном вопросе. – royhowie

ответ

2

Вы можете попробовать что-то вроде этого. Используйте busboy для получения файла, а затем, как только вы получите файл, преобразуйте его в base64 и добавьте его в свойство вложения для ваших параметров почты. Единственное, что я не знаю, возвращается ли аргумент файла в качестве буфера. Если он не просто нужно, чтобы преобразовать этот файл в базу 64 и будет иметь возможность отправить его в качестве прикрепленного

var app = express(); 
var Busboy = require('busboy'); 
var nodemailer = require("nodemailer"); 

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

app.post('/email', function(req, res){ 
    var busboy = new Busboy({ headers: req.headers }); 
    var attachments = []; 

    var mailOptions = { 
     from: "My Name <[email protected]>", // sender address 
     to: "Your Name <[email protected]>", // comma separated list of receivers 
     subject: "Hello ✔", // Subject line 
     text: "Hello world ✔" // plaintext body 
    }; 

    busboy 
     .on('file', function(fieldname, file, filename, encoding, mimetype){ 
      attachments.push({ 
       filename: filename, 
       content: file.toString('base64'), 
       encoding: 'base64' 
      }); 
     }) 
     .on('finish', function() { 
      mailOptions.attachments = attachments; 
      smtpTransport.sendMail(mailOptions, function (err, info) { 
       if (err) { 
        //handle error 
       } 
       // email sent 
      }); 
     }); 
}); 
0

Nodemailer является лучшим для отправки почты в Node.js. Я использовал Nodemailer в подписке по электронной почте для comparetrap

Смежные вопросы