Search code examples
htmlnode.jsapiemailsendgrid

Sendgrid sending html email without embedded code


i just want to send my html files directly typing ./blabla.html and not creating a campaign or a template. Is there a way to send the mails without putting embedded code ? If so, i would be so happy, thanks ! My current code looks like this :

var helper = require('sendgrid').mail
  from_email = new helper.Email("blabla@hotmail.com")
  to_email = new helper.Email("heyhey@gmail.com")
  subject = "Merhaba !"
  content = new helper.Content("text/plain", "selam")
  mail = new helper.Mail(from_email, subject, to_email, content)
}

var sg = require('sendgrid').SendGrid("mysecretapikey")
  var requestBody = mail.toJSON()
  var request = sg.emptyRequest()
  request.method = 'POST'
  request.path = '/v3/mail/send'
  request.body = requestBody
  sg.API(request, function (response) {
    console.log(response.statusCode)
    console.log(response.body)
    console.log(response.headers)
  })


Solution

  • You might need to update your sendgrid package. A working example based on your requirements looks something like this :

    var fs = require('fs');
    var path = require('path');
    
    var filePath = path.join(__dirname, 'myfile.html');
    
    fs.readFile(filePath, {encoding: 'utf-8'}, function(err, data) {
        if ( ! err ) {
          var helper = require('sendgrid').mail;
          from_email = new helper.Email("blabla@hotmail.com");
          to_email = new helper.Email("heyhey@gmail.com");
          subject = "Merhaba !";
          content = new helper.Content("text/html", data);
          mail = new helper.Mail(from_email, subject, to_email, content);
    
          var sg = require('sendgrid')('your api key');
          var requestBody = mail.toJSON();
          var request = sg.emptyRequest();
          request.method = 'POST';
          request.path = '/v3/mail/send';
          request.body = requestBody;
          sg.API(request, function (error, response) {
            if ( ! error ) {
              console.log(response.statusCode);
              console.log(response.body);
              console.log(response.headers);
            } else {
              console.log(error);
            }
          });
        } else {
            console.log(err);
        }
    });
    

    The myfile.html file is right next to this .js file and looks something like this :

    <html>
    <head>
        <title> Test </title>
    </head>
    <body>
        <h2> Hi! </h2>
        <p> This is a test email </p>
    </body>
    </html>