Search

NodeMailer's Tags

Nodejs Send Email with Attachment Tutorial
We will share with you in this article how to send an email with a file attachment in nodeJs using nodemailer package. mail send functionality is very common in nodejs application and you can be done using nodemailer. this is one of the best packages for work with mail sending in node js application. What is nodemailer Nodemailer is a module for Node.js applications to allow easy as cake email sending. The project got started back in 2010 when there was no sane option to send email messages, today it is the solution most Node.js users turn to by default. Before you can start or implement this code in your local system nodeJs must be installed in your system. If you never use before nodemailer in your nodejs application then don't worry we will here share with you all step by step. here we also have seen you how to configure Gmail mail setting in your nodemailer and how to send mail using your own Gmail account. Step - 1 Install Package First things we need to install a package in our nodejs application. first create one empty folder mailsenddemo for nodejs application. then go to your nodejs project root path and run npm init command for creating pakcage.json a file. then running the following command for install nodemailer package in your nodejs application. npm install nodemailer Make sure if you want to use the latest nodemailer package in your nodejs application then you installed nodejs version must be node.Js v6.0.0 Step - 2 Create index.js file Now, we need to create one index.js file in your project root directory. and write the following code into it. 'use strict'; const nodemailer = require('nodemailer'); // async..await is not allowed in global scope, must use a wrapper async function main() { // Generate test SMTP service account from ethereal.email // Only needed if you don't have a real mail account for testing let testAccount = await nodemailer.createTestAccount(); // create reusable transporter object using the default SMTP transport let transporter = nodemailer.createTransport({ host: 'smtp.ethereal.email', port: 587, secure: false, // true for 465, false for other ports auth: { user: testAccount.user, // generated ethereal user pass: testAccount.pass // generated ethereal password } }); // send mail with defined transport object let info = await transporter.sendMail({ from: '"Fred Foo 👻" <foo@example.com>', // sender address to: 'bar@example.com, baz@example.com', // list of receivers subject: 'Hello ✔', // Subject line text: 'Hello world?', // plain text body html: '<b>Hello world?</b>' // html body }); console.log('Message sent: %s', info.messageId); // Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com> // Preview only available when sending through an Ethereal account console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info)); // Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou... } main().catch(console.error); After doing this code in your index.js file and change your receivers and sender email id then run the following command in your terminal for a run this index.js file and check your code worked or not. node index.js After hitting the above command in your terminal then you can see the following output in your terminal. Message sent: <2f114f67-a092-a291-d12b-f43ce795c883@gmail.com> Preview URL: https://ethereal.email/message/Xaaj7HdneCuitgEMXaaj7wzb8CwPgbMbAAAAAYhvQhZDopLUBKHrXi7fzOg Then copy the Preview URL and open it in a new tab in your browser window. then you can see your sending mail content preview like that see the following image. Gmail Configuration If you want to use Gmail SMTP for send mail. and then that mail you want to send on your real Gmail account then do the following step. Just change the following code for the Gmail SMTP configuration. // create reusable transporter object using the default SMTP transport let transporter = nodemailer.createTransport({ host: 'smtp.gmail.com', port: 587, secure: false, // true for 465, false for other portss auth: { user: 'yourgmail@gmail.com', // generated ethereal user pass: 'your email account password' // generated ethereal password } }); Enable Less Secure Apps We also need to unable lesssecureapps functionality in your google Gmail account which you want to set in SMTP. just click on this link and enabled it Google Account Less Secure Apps Enable Then run your nodejs application again by running the following command. node index.js After running your index.js the file then now output will be the following in the terminal. Message sent: <058d5c5b-d72e-4e55-8008-5aa861d07334@gmail.com> Preview URL: false Here Preview URL is false so that mail content send on your gmail account. once check and confirm. Conclusion As you can see, how to send mail in node js with file attachment using nodemailer package is it very easy to implement in your node js application We hope that small tutorials help everyone.