Node JS: Sendgrid Mail 403 'Forbidden' error

14,811

Solution 1

The error exists as the email address in the "from" field in the message(in your nodejs code,, to be sent using sendgrid) is not verified by sendgrid. Only put that email address in the "from" field which is explicitely verified by sendgrid.

To verify your sender email address to be able to send emails, refer to the link below:-

https://sendgrid.com/docs/ui/sending-email/sender-verification

Hope this helps.

(There could be further issues regarding domain name, read the link properly, they have a warning regarding use of gmail.com addresses, you can ignore that)

Solution 2

Pasting the entire ERROR here

ResponseError: Forbidden
    at node_modules/@sendgrid/client/src/classes/client.js:133:29
    at processTicksAndRejections (internal/process/task_queues.js:93:5) {
  code: 403,
  response: {
    headers: {
      server: 'nginx',
      date: 'Sat, 10 Oct 2020 17:22:02 GMT',
      'content-type': 'application/json',
      'content-length': '281',
      connection: 'close',
      'access-control-allow-origin': 'https://sendgrid.api-docs.io',
      'access-control-allow-methods': 'POST',
      'access-control-allow-headers': 'Authorization, Content-Type, On-behalf-of, x-sg-elas-acl',
      'access-control-max-age': '600',
      'x-no-cors-reason': 'https://sendgrid.com/docs/Classroom/Basics/API/cors.html'
    },

Here is the solution to further expand on what @Aman answered above.

  • You have to verify the email address you are sending from.

so meaning the from: address here

const msg = {
    to: '[email protected]',
    from: '[email protected]', //this is the address that needs to be verified by sendgrid
    subject: 'Sending from Sendgrid',
    text: 'here is the test from node',
    html: `<strong> Here is the order #${orderNumber} user: ${user} </strong>`,
}

Here is how to verify it https://sendgrid.com/docs/ui/sending-email/sender-verification/

See screenshot below:

enter image description here

Solution 3

Check whether from email address is used when you are verifying your send address.

Solution 4

To fix this error you need go to perform SendGrid Sender Authentication for your sender email.

To do this, You need to login to your SendGrid Dashboard and visit Sender Authentication which is under the Settings dropdown.

There are 2 Types of Sender Authentication

  1. Domain Authentication // recommended
  2. Single Sender Verification

1 Domain Authentication
IF you allow SendGrid to authenticate your domain e.g. webapp.com
THEN you will be able to successfully send an email with your SendGrid API KEY if the email from key matches the verified domain from: *@webapp.com

2 Single Sender Authentication
This is another option where you verify a single email e.g. [email protected].
Which will then allow you to send out emails from: [email protected] via your SendGrid API KEY

Share:
14,811
iqra
Author by

iqra

Updated on July 28, 2022

Comments

  • iqra
    iqra almost 2 years

    I am sending a very straightforward email using Send grid in my node js project. But I get returned a 403 Forbidden error. The API Key has full access. The code is also correctly integrated, as I used another API Key from another account and it works perfectly.

    Error log:

    enter image description here

    Any suggestions?

  • Tulio Faria
    Tulio Faria about 4 years
    I'm facing the same problem. Changing the api key to full access does not solve it either.
  • iqra
    iqra about 4 years
    Tulio Faria i solved it by performing 'Single Sender Authentication' on my Sendgrid account. However, I have another account and I have not verified any domain or sender email, but I am still able to send an email from that account. And its mind boggling because I can specify ANY email address as the sender and the email is successfully delivered. Not sure what the real issue is.
  • Codebrekers
    Codebrekers over 3 years
    @Sean C and "aledap" I tried with same to change access but still facing the same issue, it will give me 403 error.
  • Jonathan Sanchez
    Jonathan Sanchez over 3 years
    @sean - this solution is overkill for what's really happening here, the error is because the from: '[email protected]', inside your msg object has not been confirmed/verified by Sendgrid just yet
  • Julien Ambos
    Julien Ambos over 3 years
    The "from: *@webapp.com" part was what did it for me
  • Ahmad Alfy
    Ahmad Alfy about 3 years
    This should be the accepted answer, thank you!
  • Oliver Nilsen
    Oliver Nilsen almost 3 years
    How do you verify a "donotreply" email address, when the SendGrid wants to send a verificication email to an address that doesn't exist?
  • user3050478
    user3050478 over 2 years
    I'm not sure that I can use this particular field for this pourpose, and forgive me if its not, but thank you so much! I was thinking it was about the encoding method I was using in the fields passed by the class...
  • Perelan
    Perelan about 2 years
    This solved my problem - thanks! Kept getting 403 despite having a verified sender on SendGrid. No idea why the example show: "from: 'string'" instead of what you suggested.