Example #1
0
function render(callback) {
  const salesStats = Immutable.fromJS(
    JSON.parse(
      fs.readFileSync(__dirname + '/../data/sales_stats.json', { encoding: 'utf8' })
    ).map(parseFloat)
  );

  const css = fs.readFileSync(__dirname + '/styles.css', { encoding: 'utf8' });
  const html = juice.inlineContent(
    ReactDOMServer.renderToStaticMarkup(<DigestEmail salesStats={salesStats}/>),
    css
  );

  const document = jsdom(html);
  const svg = document.querySelector('svg');

  let pngData;
  exec(`echo '${svg.outerHTML}' | rsvg-convert | base64`, (err, stdout, stderr) => {
    pngData = stdout;

    let img = document.createElement('img');
    img.src = 'cid:salessparkline';
    svg.parentNode.replaceChild(img, svg);

    callback(document.querySelector('html').outerHTML, [
      {
        type: 'image/png',
        name: 'salessparkline',
        content: pngData,
      }
    ]);
  });
}
 requestResource.get('https://www.synapse.org/Portal.css', function (error, resourceResponse, resourceBody) {
     if (!error && resourceResponse.statusCode == 200) {
       var css = resourceBody;
       var inlinedStyledHtml = juice.inlineContent(resultHtml, css);
       response.end(JSON.stringify({ result: inlinedStyledHtml }));        
     }
 });
                    dust.render(compileid, message.Parameters, function(errRendered, outRendered) {
                        if(errRendered)
                        {
                            logger.error("Error in rendering "+ errRendered);
                        }
                        else
                        {

                            var renderedTemplate="";
                            var juiceOptions={
                                applyStyleTags  :true
                            }

                            if(resPickTemp.styles.length>0)
                            {
                                for(var i=0;i<resPickTemp.styles.length;i++)
                                {
                                    if (i == 0)
                                    {
                                        renderedTemplate = outRendered;
                                    }

                                    //console.log(resPickTemp.styles[i].content);
                                    logger.info("Rendering is success "+ resPickTemp.styles[i].content);

                                    renderedTemplate=juice.inlineContent(renderedTemplate, resPickTemp.styles[i].content, juiceOptions);
                                    if(i==(resPickTemp.styles.length-1))
                                    {


                                        mailOptions.text = renderedTemplate;

                                        SendRequest(company,tenant,mailOptions,function(done){

                                            if(!done)
                                                ack.reject(true);
                                            else
                                                ack.acknowledge();

                                        });
                                    }
                                }
                            }
                            else
                            {
                                console.log("Rendering Done");
                                mailOptions.text = outRendered;
                                SendRequest(company,tenant,mailOptions,function(done){

                                    if(!done)
                                        ack.reject(true);
                                    else
                                        ack.acknowledge();

                                });
                            }
                        }

                    });
                                            dust.render(compileid, data.message.Parameters, function (errRendered, outRendered) {
                                                if (errRendered) {
                                                    logger.error("Error in rendering " + errRendered);
                                                }
                                                else {

                                                    var renderedTemplate = "";
                                                    var juiceOptions = {
                                                        applyStyleTags: true
                                                    }

                                                    if (resPickTemp.styles.length > 0) {
                                                        for (var i = 0; i < resPickTemp.styles.length; i++) {
                                                            if (i == 0) {
                                                                renderedTemplate = outRendered;
                                                            }

                                                            //console.log(resPickTemp.styles[i].content);
                                                            logger.info("Rendering is success " + resPickTemp.styles[i].content);

                                                            renderedTemplate = juice.inlineContent(renderedTemplate, resPickTemp.styles[i].content, juiceOptions);
                                                            if (i == (resPickTemp.styles.length - 1)) {

                                                                if (resPickTemp.filetype.toLowerCase() == 'html') {
                                                                    mailOptions.html = renderedTemplate;
                                                                } else {
                                                                    mailOptions.text = renderedTemplate;
                                                                }
                                                            }
                                                        }
                                                    }
                                                    else {
                                                        console.log("Rendering Done");

                                                        if (resPickTemp.filetype.toLowerCase() == 'html') {
                                                            mailOptions.html = outRendered;
                                                        } else {
                                                            mailOptions.text = outRendered;
                                                        }

                                                        //SendMail(mailOptions, data);
                                                    }

                                                    if (resPickTemp.content.subject) {

                                                        var compilesubid = uuid.v4();
                                                        var compiledsub = dust.compile(resPickTemp.content.subject, compilesubid);
                                                        dust.loadSource(compiledsub);
                                                        dust.render(compilesubid, data.message.Parameters, function (errsubRendered, outsubRendered) {
                                                            mailOptions.subject = outsubRendered;
                                                            SendMail(mailOptions, data);
                                                        });

                                                    } else {

                                                        SendMail(mailOptions, data);
                                                    }
                                                }
                                            });
export function send(to, template, data, options = {}) {
  if (!(template in cachedTemplates)) {
    const dir = path.join(templateDir, template);

    const templateFuncs = {
      html: compileTemplate(path.join(dir, 'html')),
      text: compileTemplate(path.join(dir, 'text')),
      subject: compileTemplate(path.join(dir, 'subject')),
      style: compileStyle(path.join(dir, 'style')),
      styleTag: compileStyle(path.join(dir, 'styleTag')),
    };
    cachedTemplates[template] = templateFuncs;
  }

  const tpl = cachedTemplates[template];
  const tplData = _.assign(
    {
      config,
      moment,
      _,
      style: tpl.styleTag,
      email: to,
    },
    data
  );

  const html = juice
    .inlineContent(tpl.html(tplData), tpl.style)
    .replace(/class="([^"]+)"/g, 'class="$1" summary="$1"');
  // Duplicate all classes in title tags for use in CSS
  // selectors (Gmail strips classes)
  const text = wrap(tpl.text(tplData));
  const subject = tpl.subject(tplData).trim();

  return sendMail(
    Object.assign(
      {
        to,
        subject,
        text,
        html,
      },
      options
    )
  );
}
    .then((results) => {
      let [html, style] = results
      if (!style) return html
      if (this.options.juiceOptions) {
        debug('Using juice options ', this.options.juiceOptions)
      }
      let rendered = juice.inlineContent(html, style, this.options.juiceOptions || {})

      // inline style into rendered html
      var $ = cheerio.load(rendered);
      var $appendTo = null;
      if (this.options.juiceOptions.insertPreservedExtraCss !== true) {
        $appendTo = $(options.insertPreservedExtraCss)
      } else {
        $appendTo = $('head')
        if (!$appendTo.length) $appendTo = $('body')
        if (!$appendTo.length) $appendTo = $.root()
      }
      $appendTo.first().append('<style>' + style + '</style>')

      return $.html()
    })
function compileTemplate(templatePath, css) {
  var html = jade.renderFile(templatePath, {});
  var compiled = juice.inlineContent(html, css, { })
  return compiled;
};
Example #8
0
export const inlinecss = (html) => juice.inlineContent(html, Settings.get('email_style'));
Example #9
0
 selectorsWithUrls.forEach(function (elem, idx) {
     console.log('inline styles', selectorsWithUrls[idx]);
     editedFileContent = juice.inlineContent(editedFileContent, selectorsWithUrls[idx], {xmlMode: true});
 });