Как назначить переменные в шаблоне почтового ящика (Node js)? - PullRequest
1 голос
/ 19 февраля 2020

Я создал облачную функцию Google, в которой отправляю электронное письмо с переменными, полученными из другого места. Я использую mailgun. js и пытаюсь отправить электронное письмо с шаблоном, который я уже создал в mailgun. Проблема в том, что я не могу найти способ заменить переменные-заполнители в моем шаблоне.

Это код:

mg.messages.create('domain', {
    from: 'email',
    to: [email],
    subject: 'subject',
    template: 'template',
    // How to replace the template variables???
  })
  .then(res => console.log('Resolved >>>>> ', res))
  .catch(err => console.log('MAILGUN ERROR >>>> ', err))

В mailgun docs написано this:

var data = {
  from: 'Excited User <me@samples.mailgun.org>',
  to: 'alice@example.com',
  subject: 'Hello',
  template: 'template.test',
  h:X-Mailgun-Variables: '{"title": "API Documentation", "body": "Sending messages with templates"}' // Notice this
};

Насколько я знаю, никто не может написать "h:X-Mailgun-Variables" как ключ в любом объекте.

Кто-нибудь знает, где или как мне его нужно поместить?

Я думал, что он должен быть отправлен в качестве заголовка, но ни mailgun / mailgun- js, ни с высоким содержанием кофеина / mailgun- js указывает, как передавать заголовки.

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Вы можете установить h:X-Mailgun-Variables в качестве ключа, используя кавычки вокруг клавиши.

Однако вам необходимо получить доступ к значению внутри объекта, используя скобочные обозначения.

Например

const foo = {
  "ba ar": "foobar",
  "test" : "test"
}

console.log(foo["ba ar"], foo.test)
// #> foobar test


//doesn't work
console.log(foo."ba ar")

1 голос
/ 20 февраля 2020

я сделал то же самое в NodeJs, но с использованием Nodemailer. Итак, сначала я рендерил файл, используя E JS и отправив переменные в файл, а затем отправил тот же файл пользователю

. это помогло мне назначить другой атрибут в моем файле, как мне нравится, вот код

function generateToken_And_SendMail(user) 
{
   token = jwt.sign(user,process.env.privateKey)
  ejs.renderFile(__dirname + '/verification_email.ejs',{verify_token : `${process.env.localhost_address}/verifyToken?Authorization=Bearer%20${token}`
                                                        ,username : user.Fullname},(error,file)=>
  {
    if(error)
    console.log(error)
    else
    sendmail_Config(file,user.userEmail,'Email Verification')
  })
   return token 
}
...