Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 发送邮件时,Sendgrid SMTP API未替换替换标记_Javascript_Node.js_Sendgrid - Fatal编程技术网

Javascript 发送邮件时,Sendgrid SMTP API未替换替换标记

Javascript 发送邮件时,Sendgrid SMTP API未替换替换标记,javascript,node.js,sendgrid,Javascript,Node.js,Sendgrid,我正在开发一个Node.js应用程序,其中包含Sendgrid事务电子邮件模板,用于用户邀请等。具体来说,我在Ubuntu上使用的是nodejs v0.10.25,其中包含官方的sendgrid v2 npm。我实际发送消息的功能如下: function sendEmail(payload, options, cb){ //for debugging purposes console.log(options); var email = new sendgrid.Emai

我正在开发一个Node.js应用程序,其中包含Sendgrid事务电子邮件模板,用于用户邀请等。具体来说,我在Ubuntu上使用的是nodejs v0.10.25,其中包含官方的sendgrid v2 npm。我实际发送消息的功能如下:

function sendEmail(payload, options, cb){
    //for debugging purposes
    console.log(options);

    var email = new sendgrid.Email({
            subject: payload.subject,
            html: payload.html,
            from: global.config.sendgrid.mailFrom,
            fromname: global.config.sendgrid.mailName,
            replyto: options.replyto ? options.replyto : 'no-reply@' + global.config.sendgrid.mailhost
    });

    email.setSmtpapiTos(options.addressees);

    if(options.filters)
            email.setFilters(options.filters);

    if(options.subs)
            email.setSubstitutions(options.subs);

    if(options.category)
            email.setCategories(options.category);

    if(options.unique_args)
            email.setUniqueArgs(options.unique_args);

    sendgrid.send(email, function(err, json){
            return cb(err, json);
    });
}
包含替换的选项对象如下所示:

{ category: 'Support Invite',
  addressees: [ %EMAIL1%, %EMAIL2% ],
  sub: 
   { '-name-': [ 'Shawn 1', 'Shawn 2' ],
     '-id-': [ 1, 2 ],
     '-pic-': 
      [ '<img height="100" src="%PICTURE URL%?sz=50" style="width: 100px; height: 100px;" width="100" />',
        '<img height="100" src="%PICTURE URL%?sz=50" style="width: 100px; height: 100px;" width="100" />' ] },
  filters: 
   { 
     templates: 
      { 
        settings:
         { 'enable': 1,
       'template_id': global.config.sendgrid.transactions.supportInvite} } },
  unique_args: 
   { 
     sender: '104294048950213400380' } }
{类别:“支持邀请”,
收件人:[%EMAIL1%,%EMAIL2%],
附属的:
{'-name-':['Shawn 1','Shawn 2'],
“-id-”:[1,2],
“-pic-”:
[ '',
'' ] },
过滤器:
{ 
模板:
{ 
设置:
{'enable':1,
“模板id”:global.config.sendgrid.transactions.supportInvite},
唯一参数:
{ 
发件人:'10429404895021340380'}
最后,以下是此测试中模板的HTML:


-图片-
你好-姓名-,
%主体%
邀请ID:-ID-

我看到您的选项对象有一个属性子对象,而不是子对象。option.subs将始终未定义,因此在中为false

if(options.subs)

或者尝试将其更改为

如果(选项sub)


或者将选项中的属性从sub重命名为subs。

是的,我在发布这个问题一小时后就发现了这一点。我觉得自己像个白痴,我的第一个问题是一个愚蠢的打字错误。无论如何,谢谢你。