Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to attach file to an email with nodemailer

I have code that send email with nodemailer in nodejs but I want to attach file to an email but I can't find way to do that I search on net but I could't find something useful.Is there any way that I can attach files to with that or any resource that can help me to attach file with nodemailer?

var nodemailer = require('nodemailer'); var events = require('events'); var check =1; var events = new events.EventEmitter(); var smtpTransport = nodemailer.createTransport("SMTP",{     service: "gmail",     auth: {         user: "[email protected]",         pass: "pass"     } }); function inputmail(){     ///////Email     const from = 'example<[email protected]>';     const to  = '[email protected]';     const subject  = 'example';     const text = 'example email';     const html = '<b>example email</b>';     var mailOption = {         from: from,         to:  to,         subject: subject,         text: text,         html: html     }     return mailOption; } function send(){         smtpTransport.sendMail(inputmail(),function(err,success){         if(err){             events.emit('error', err);         }         if(success){             events.emit('success', success);         }     }); } /////////////////////////////////// send(); events.on("error", function(err){     console.log("Mail not send");     if(check<10)         send();     check++; }); events.on("success", function(success){     console.log("Mail send"); }); 
like image 871
DanialV Avatar asked Feb 21 '14 12:02

DanialV


People also ask

How do I send an email with an attachment in react JS?

import React, { useRef } from 'react'; import emailjs from '@emailjs/browser'; export const ContactUs = () => { const form = useRef(); const addFile = () => { inputFile. current. click(); }; const sendEmail = (e) => { e. preventDefault(); emailjs.


2 Answers

Include in the var mailOption the key attachments, as follow:

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='     } ] 

}

Choose the option that adjust to your needs.

Link:Nodemailer Repository GitHub

Good Luck!!

like image 165
Harry Martel Avatar answered Sep 19 '22 16:09

Harry Martel


Your code is almost right, just need to add, "attachments" property for attaching the files in your mail,

YOUR mailOption:

var mailOption = {         from: from,         to:  to,         subject: subject,         text: text,         html: html } 

Just add attachments like

var mailOption = {         from: from,         to:  to,         subject: subject,         text: text,         html: html,         attachments: [{             filename: change with filename,             path: change with file path         }] } 

attachments also provide some other way to attach file for more information check nodemailer community's documentation HERE

like image 44
Dhaval Avatar answered Sep 17 '22 16:09

Dhaval