首页 文章

Mailgun API:批量发送与个人呼叫

提问于
浏览
5

Background

我们正在构建一个应用程序,通过Mailgun处理和发送电子邮件 . 这些有时是一次性消息,由事务启动 . 但是,有些电子邮件会立即发送到30k .

例如,给所有成员的通讯 .

Considerations

Mailgun提供了一个带有API的Batch Sending选项 . 使用"Recipient Variables",您可以包含与特定用户配对的动态值 .

但是,此批量发送功能是有限的 . 每个请求不能发送超过1,000个收件人,这意味着我们必须遍历每个1,000的收件人列表(在我们的数据库中) . Mailgun provides an example这是如何工作的,使用Python(向左滚动约2/3) .

Question

批量发送是否有任何优势(即,使用收件人变量通过单个API调用向一组收件人发送电子邮件),而不是进行自己的循环,变量替换和单个API调用?

我认为这对我们的服务器来说更加沉重,因为它会处理每个消息本身,而不是仅仅将所有数据卸载到Mailgun的服务器上,以便在他们的终端上进行繁重的工作 . 但我也喜欢在我们的最终处理灵活性和简单性,并一次向Mailgun发送一个“完全呈现”的消息,而不必一次迭代1k .

关于最佳实践的任何想法,或者我们应该考虑的因素?

1 回答

  • 6

    今天偶然发现了这一点,感觉它为我原来的问题提供了一个很好的总结/答案 . 我想发布这个作为答案,以防其他人有这个问题并且没有找到这个Mailgun帖子 . 也直接从马的嘴里出来 . 坚果壳版本:

    至少对于PHP,SDK有一个 Mailgun 类,带有 BatchMessage() 方法 . 这实际上处理了对您的收件人计数,因此您可以根据需要排队多个电子邮件地址(即超过1k),并且Mailgun将根据需要启动到API endpoints . 很漂亮!

    这是他们原来的措辞,加上页面的链接 .
    Sending a message with Mailgun PHP SDK + Batch Message:

    批处理消息除了消息生成器,我们还有批处理消息 . 此类允许您批量构建消息并提交模板消息,每个帖子最多1,000个收件人 . 使用此类的好处是收件人计数受到监控,并在您添加第1,000个收件人时自动将邮件提交到 endpoints . 这意味着您可以构建消息并开始迭代数据库 . 忘记发送消息,SDK将在必要时跟踪发布到API . //首先,使用您的API凭据实例化SDK并定义您的域 .

    $ mgClient = new Mailgun(“关键示例”);
    $ domain =“example.com”;

    //接下来,从SDK中实例化Message Builder对象,传入您的发送域 .

    $ batchMsg = $ mgClient-> BatchMessage($ domain);

    //定义发件人地址 .

    $ batchMsg-> setFromAddress( “dwight@example.com”
    array(“first”=>“Dwight”,“last”=>“Schrute”));
    //定义主题 .

    $ batchMsg-> SETSUBJECT( “救命啊!”);

    //定义消息正文 .

    $ batchMsg-> setTextBody(“打印机着火!”);

    //接下来,让我们为批处理作业添加一些收件人 .
    $ batchMsg-> AddToRecipient用于( “pam@example.com”
    array(“first”=>“pam”,“last”=>“Beesly”));
    $ batchMsg-> AddToRecipient用于( “jim@example.com”
    array(“first”=>“Jim”,“last”=>“Halpert”));
    $ batchMsg-> AddToRecipient用于( “andy@example.com”
    array(“first”=>“Andy”,“last”=>“Bernard”));
    // ...等......等等......
    // 1000个食谱后,
    // Batch Message会自动将您的消息发布到消息 endpoints .

    //调用finalize()以发送仍在缓冲区中的所有剩余收件人 .

    $ batchMsg->完成();

相关问题