MailGun: добавление переменных данных в электронную почту

Я отправляю электронные письма через Node.js с помощью MailGun. Я хочу добавить пользовательские переменные данных, которые содержат данные из базы данных, которые отправляются как часть тела письма. Основываясь на моем исследовании, мне нужно использовать recipient-variables. Но проблема в том, что recipient-variables требует email получателя как key объекта, например:

{
   "[email protected]" : {"unique_id": "ABC123456789"},
   "[email protected]" : {"unique_id": "ZXY987654321"}
}

Теперь данные, которые я получаю из своей базы данных, следующие:

{ email: '[email protected]', projects: [ 'aqeqw weqw ', 'title here' ]}

В то время как MailGun требует этого (что мне кажется странным):

{'[email protected]': { email: '[email protected]', projects: [ 'aqeqw weqw ', 'title here' ]}}

Как я могу установить ключ объекта, который я получаю из базы данных, в качестве электронного письма?

К вашему сведению, мой код для MailGun:

let data = {
                from: 'My App <[email protected]>',
                to: data.email,
                subject: 'Reminder Email',
                'recipient-variables': {data},
                html: '<html style="color: red; font-size: 20px; background-color: aqua">Inline image here:<p style="">Your project list and your name is %recipient.projects%</p></html>',
            };

            mailgun.messages().send(data, function(error, body) {

                console.log(body);

            });

person Skywalker    schedule 01.12.2017    source источник
comment
Вы можете сделать что-то вроде var a = { email: '[email protected]', projects: [ 'aqeqw weqw ', 'title here' ]}; var b = {[a.email] : a}, тогда внутри b у вас будет {'[email protected]': { email: '[email protected]', projects: [ 'aqeqw weqw ', 'title here' ]}}   -  person codtex    schedule 01.12.2017
comment
@codtex идеально. Спасибо!!!   -  person Skywalker    schedule 01.12.2017


Ответы (1)


Вы можете сделать это вот так, с промежуточным объектом:

let obj = {
  email: '[email protected]',
  projects: [ 'aqeqw weqw ', 'title here' ]
}

let final = {}
final[obj.email] = obj

console.log(final)
/*  {
      '[email protected]': 
      {
        email: '[email protected]',
        projects: [ 'aqeqw weqw ', 'title here' ]
      }
    }
*/
person TGrif    schedule 01.12.2017
comment
Ах прекрасно. спасибо, это сработало. Я приму ответ. Есть ли шанс, что вы знаете, как перечислить значения массива в теле письма Mailgun? В настоящее время я делаю %recipient.projects% внутри тела, но отображается [u'aqeqw weqw ', u'aqeqw weqw ', u'james title']. - person Skywalker; 01.12.2017
comment
Не знаю хорошо API Mailgun, но из документа, похоже, вам нужно отформатировать свои данные как JSON. - person TGrif; 01.12.2017