代码之家  ›  专栏  ›  技术社区  ›  Tom Bom

如何向一系列电子邮件发送mandrill电子邮件?

  •  2
  • Tom Bom  · 技术社区  · 7 年前

    我正在节点中构建一个应用程序,每次有新用户访问预定义的电子邮件数组时,我都使用mandrill发送电子邮件。我有一系列电子邮件:

    我有这个功能

    newUserEmail(user_name, email) {
      emailArray = [example1@ex.com, example2@ex.com, example3@ex.com]
      const message = {
        html: '<p>Name: *|NAME|* <br> Email: *|EMAIL|*</p>',
        text: 'Name: *|NAME|*, Email: *|EMAIL|*',
        subject: 'New person arrived',
        from_email: 'newperson@example.com',
        from_name: 'New',
        to: [{
          email: emailArray,
          type: 'to'
        }],
        merge: true,
        merge_vars: [{
          rcpt: emailArray,
          vars: [{
            name: 'NAME',
            content: user_name
          }, {
            email: 'EMAIL',
            content: email
          }]
        }]
      };
      mandrill_client.messages.send({ message }, function(result) {
        console.log(result);
      }, function(e) {
        console.log(`A mandrill error occurred: ${e.name} - ${e.message}`);
      });
    }
    

    我在控制台上看到这个:

    [ { email: 'Array',
        status: 'invalid',
        _id: '...',
        reject_reason: null } ]
    

    如果我只设置一封电子邮件,它就会毫无问题地发送。

    我是否需要做一个循环,并在数组中多次运行此函数?我希望Mandrill能识别出阵列中的电子邮件:(

    1 回复  |  直到 7 年前
        1
  •  1
  •   grath    7 年前

    从我在查看文档后收集到的信息来看,“to”数组中的每个对象都是一个单独的电子邮件地址。

    我不会为每个电子邮件地址运行该函数。只需在电子邮件阵列上映射即可。 例如:

    const formattedArray = emailArray.map(email => ({ email, type: 'to' }));
    
    // if you're not a fan of arrow functions
    
    const formattedArray = emailArray.map(function(email) {
       return { email, type: 'to' };
    });
    

    然后在mandrill消息中,您可以将“to”设置为与formattedArray相等。

    to: formattedArray
    
    推荐文章