Sending bulk emails in Node.js using SendGrid API

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:
    • Start a node.js app using the command
      npm init -y
    • Create a file named index.js and add a boiler plate code.
      filter_none

      edit
      close

      play_arrow

      link
      brightness_4
      code

      // 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}`));

      chevron_right

      
      

    • 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:
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    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}`));

    chevron_right

    
    

    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.



My Personal Notes arrow_drop_up

Passionate Programmer💻, Engineering student, Machine Learning Enthusiast and a Fond of Cricket🏏

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.