1
votes

Has anyone been able to use SendGrid templates with Parse Cloud Code?

This works, but only sends text, any ideas on how to use a template_id?

I tried with the filter but was not successful.

Parse.Cloud.define("sendEmail", function(request, response) {

  // Import SendGrid module and call with your SendGrid API Key
  var sg = require('sendgrid')('your SendGrid API key here');

  // Create the SendGrid Request
  var reqSG = sg.emptyRequest({
    method: 'POST',
    path: '/v3/mail/send',
    body: {
      personalizations: [
        {
          to: [
            {
              // This field is the "to" in the email
              email: request.params.toEmail,
            },
          ],
          // This field is the "subject" in the email
          subject: request.params.subject,
        },
      ],
      // This field contains the "from" information
      from: {
        email: '[email protected]',
        name: 'Your Name',
      },
      // This contains info about the "reply-to"
      // Note that the "reply-to" may be different than the "from"
      reply_to: {
        email: '[email protected]',
        name: 'Your Name',
      },
      content: [
        {
          type: 'text/plain',
          value: request.params.body,
        },
      ],
    },
  });

  sg.API(reqSG, function(SGerror, SGresponse) {
    // Testing if some error occurred
    if (SGerror) {
      // Ops, something went wrong
      console.error('Error response received');
      console.error('StatusCode=' + SGresponse.statusCode);
      console.error(JSON.stringify(SGresponse.body));
      response.error('Error = ' + JSON.stringify(SGresponse.body));
    } 
    else {
      // Everything went fine
      console.log('Email sent!');
      response.success('Email sent!');
    }
  });

});

This is from the documentation on Back4App https://docs.back4app.com/docs/integrations/using-sendgrid-to-send-email/

1

1 Answers

1
votes

If anyone is looking for the answer it turned out to be simple,

add the template_id as a personalization and change the message type the text/html,

 template_id:"your template_id",
              content: [
                {

                  type: 'text/html',
                  // This field is the body of the email
                  value: "",
                },
              ],