Open In App

Sending bulk emails in Node.js using SendGrid API

Improve
Improve
Like Article
Like
Save
Share
Report

What is SendGrid API? 
SendGrid is a platform for sending transactional and marketing emails to the customers. It provides scalability, reliability, and deliverability which is an important issue for an organization.
Benefits of using SendGrid API:

  • If you are using Nodemailer with Gmail then you can send only certain amount of emails per day.
  • Also, there is no need to set up your own SMTP server.
  • SMTP doesn’t provide the deliverability, i.e. email may or may not be sent.

Steps to send emails using SendGrid API:

  1. Setting up an API key: 
    • Go to sendgrid dashboard and click on create api key button.
       
    • Name the API-key as you want, for this tutorial we’ll name it node-mail
    • Copy the API-key as for security reasons you may not be able to see it again.

  2. Setting up a node.js app:
    • Create an empty NPM package using the command. (The –y flag which is passed is used to use the defaults in the generator instead of asking questions)
       
      npm init -y
    • Create a file named index.js and add a boiler plate code.

      index.js




      // Importing http library
      const http = require("http");
        
      const PORT = 3000; // Defining PORT
        
      http.createServer((req, res) => {
        
          // Output Hello World on HTML page
          res.write("<h1>Hello World!</h1>");
          res.end();
      })
        
      // Initializing server
      .listen(PORT,() => console.log(`Server running on PORT : ${PORT}`));

      
      

    • Now run the code by using node index command and go to 127.0.0.1:3000 link. You will see the output.
    • And in console 
       
  3. Installing SendGrid library: Install the SendGrid library by running the below command
    npm i @sendgrid/mail
  4. Sending emails by using library:

    javascript




    const http = require("http");
      
    const PORT = 3000;
      
    http.createServer((req, res) => {
      
        // Initializing sendgrid object
        const mailer = require("@sendgrid/mail");
      
        // Insert your API key here
        mailer.setApiKey("<your-api-key>");
          
        // Setting configurations
        const msg = {
          to: ["youremail@gmail.com", "your.second.email@gmail.com"],
          from: "noreply@example.com",
          subject: "Message sent for demo purpose",
          html:
            "<h1>New message from Geeksforgeeks</h1> 
               
    <p>Some demo text from geeksforgeeks.</p>
    "
        };
      
        // Sending mail
        mailer.send(msg, function(err, json) {
          if (err) {
            console.log(err);
      
            // Writing error message
            res.write("Can't send message sent");
          } else {
      
            // Writing success message
            res.write("Message sent");
          }
        });
      
        res.end();
      })
    .listen(PORT, () => console.log(`Server running on PORT : ${PORT}`));

    
    

Now run the app again by using node index and go to 127.0.0.1:3000 in the browser and check both of your emails, you’ll see an output like below.



Last Updated : 13 Jan, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads