1

Я хочу отправить уведомление по электронной почте в мое приложение, и я пытаюсь использовать sendgrid. Мое приложение написано в CoffeeScript.Sendgrid Substitutions Tags

enter code here 
from_address = '[email protected]' 
subject = 'This Is The Subject' 
html_body = '<table style="font-family: verdana, tahoma, sans-serif; color: #000;"> 
      <tr> <td> 
      <h2>Hello,</h2> <p>Hello!!</p> 
          <p>%%name%% %%surname%% send you a message</p> 
      </table>' 
sendgrid = require('sendgrid')(api_key) 
Email = sendgrid.Email 
email = new Email(
    to: to_address 
    from: from_address 
    subject: subject 
    text: text_body 
    html: html_body) 

recipients = [ 
    '[email protected]' 
    '[email protected]' 
] 
i = 0 
while i < recipients.length 
    email.addTo recipients[i] 
    i++ 

substitutions = { 
    "%%name%%": [ 
    "name1", 
    "name2" 
    ], 
    "%%surname%%": [ 
    "surname1", 
    "surname2" 
    ] 
} 

for tag in substitutions 
    email.addSubstitution(tag, substitutions[tag]) 

email.setFilters({ 
    "templates": { 
    "settings": { 
     "enable": "1", 
     "template_id": "XXXXXX-XXX-XXXX-XXXX-XXXXXXXXXX" 
    } 
} 
}) 


sendgrid.send email, (err, json) -> 
    if err 
    return console.log(err) 
    console.log json 
return 

При выполнении кода отправьте мое электронное письмо на адрес электронной почты. Но сообщение такое:

Здравствуйте!

%% name %% %% surname %% отправить вам сообщение.

Замена не работает. Я пытаюсь изменить %% на%, - и #. Но любой из них, похоже, работает. Также я пытаюсь использовать setSections.

Update

Это sendgrid объект я посылаю.

{ to: [ '[email protected]', '[email protected]' ], 
    from: '[email protected]', 
    smtpapi: 
    { version: '1.2.0', 
    header: 
     { to: [], 
     sub: {}, 
     unique_args: {}, 
     category: [Object], 
     section: {}, 
     filters: [Object], 
     send_at: '', 
     send_each_at: [], 
     asm_group_id: {}, 
     ip_pool: '' } }, 
    subject: 'This Is The Subject', 
    text: 'Hello!\n\nThis is a test message from SendGrid. We have sent this to you because you requested a test message be sent from your account.\n\n This is a link to google.com: http://www.google.com\n This is a link to apple.com: http://www.apple.com\n This is a link to sendgrid.com: http://www.sendgrid.com\n\n Thank you for reading this test message.\n\nLove,\nYour friends at SendGrid', 
    html: '<table style="font-family: verdana, tahoma, sans-serif; color: #000;"> <tr> <td> <h2>Hello,</h2> <p>Hello!!</p> <p>%%name%% %%surname%% send you a message</p> </table>', 
    bcc: [], 
    cc: [], 
    replyto: '', 
    date: '', 
    headers: {}, 
    toname: undefined, 
    fromname: undefined, 
    files: [] } 

Что я делаю неправильно?

Благодарим вас заблаговременно.

+0

Не могли бы вы распечатать, как выглядит объект sendgrid? Похоже, что вы не добавляете подстановки в заголовок 'x-smtpapi' должным образом, но, увидев, что все будет полезно, – jacobmovingfwd

+0

Привет, @jacobmovingfwd Я добавил объект sendgrid непосредственно перед использованием метода sendgrid.send. Спасибо за помощь. – jasc

+0

Никто не знает, что может быть проблемой? – jasc

ответ

0

Я отвечаю на свой вопрос, потому что уже нашел проблему.

Проблема не связана с Sendgrid, а с coffeeScript. В одном из моих заявлений я использую это:

for tag in substitutions 
    email.addSubstitution(tag, substitutions[tag]) 

Я пробую здесь добавить объект электронной почты в тег замещения. Но отладка моего кода я обнаружил, что цикл не перебирает переменную замещения. Таким образом, любой тег был добавлен в объект электронной почты.

Я изменил предыдущий код для этого:

Object.keys(substitutions).forEach((tag)-> 
    email.addSubstitution(tag, sub[tag]) 
    return 

И с этим изменением замен теги был добавлен к объекту электронной почты.