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"); });
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.
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!!
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With