2

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)
  })
DuyguKeskek
  • 333
  • 3
  • 17
  • Why not read the HTML file into a string like this : http://stackoverflow.com/questions/18386361/read-a-file-in-node-js ? Also note that you would want `text/html` for `content` if you want to send it as HTML. – Sebastian-Laurenţiu Plesciuc Aug 02 '16 at 13:20
  • That's ok, however i can't find where to put that read operation. When i call the read func, it just reads the content on cmd and sends the mail to the receiver writing the function name. Any help ? @Sebastian-LaurenţiuPlesciuc – DuyguKeskek Aug 02 '16 at 14:08

1 Answers1

3

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>