Php 使用mailgun消息生成器向单个收件人发送批量电子邮件
我使用mailgun作为php中的API服务来发送电子邮件。然而,我正在构建一个模块,在其中我可以向我的订阅者发送电子邮件 我正在使用下面的代码来实现相同的功能Php 使用mailgun消息生成器向单个收件人发送批量电子邮件,php,php-7,mailgun,Php,Php 7,Mailgun,我使用mailgun作为php中的API服务来发送电子邮件。然而,我正在构建一个模块,在其中我可以向我的订阅者发送电子邮件 我正在使用下面的代码来实现相同的功能 $builder = new MessageBuilder(); $builder->setFromAddress("updates@somedomain.com", array("first"=>"Some Domain")); foreach ($subscribers as $key => $value)
$builder = new MessageBuilder();
$builder->setFromAddress("updates@somedomain.com", array("first"=>"Some Domain"));
foreach ($subscribers as $key => $value)
$builder->addToRecipient($value['email']);
$builder->setSubject($subject);
$builder->setHtmlBody(include("email-templates/emailSubscribers.php"));
if(strlen($attachment) > 20)
$builder->addAttachment($attachment);
try
{
$mgClient = Mailgun::create(MAILGUN_API_KEY);
$result = $mgClient->messages()->send(MAILGUN_DOMAIN_NAME, $builder->getMessage());
if(strpos($result->getMessage(), 'Queued') !== false)
return [ 'status' => true ];
else
return [ 'status' => false, 'message' => $result->getMessage() ];
// For the ID: $response->getId()
}
catch(\Exception $e)
{
echo json_encode(
[
'type' => 'error',
'heading' => 'Could not broadcast!',
'message' => 'Some problem occurred while sending emails, kindly debug. '.$e
]
);
}
代码运行得非常好,唯一的问题是,当邮件发送时,所有收件人都被标记为收件人,任何人都可以在中看到邮件。我想让邮件看起来像是作为个人发送给每个订阅者的,而且邮件服务器不应将其标记为垃圾邮件。尝试以批处理邮件的形式发送
$mgClient = Mailgun::create(MAILGUN_API_KEY);
$builder= $mgClient->messages()->getBatchMessage("somedomain.com");
//regular stuff
$builder->setFromAddress("updates@somedomain.com", array("first"=>"Some Domain"));
foreach ($subscribers as $key => $value)
$builder->addToRecipient($value['email']);
$builder->setSubject($subject);
$builder->setHtmlBody(include("email-templates/emailSubscribers.php"));
if(strlen($attachment) > 20)
$builder->addAttachment($attachment);
$builder->finalize(); //equivalent of ->send
我应该如何在try-catch块中运行此操作?我应该在try-catch块中放入哪个部分来捕获异常?还有如何跟踪响应以检查消息是否已排队/sentfinalize将进入try-catch,批发送不会返回任何跟踪信息还请注意,如果收件人超过1K,批发送将失败,因此如果我没有收到响应,我应该如何假设消息已排队?还有,如果我的电子邮件超过1k怎么办?我应该如何实现这一逻辑?您提供的上述解决方案如我所希望的那样具有吸引力,应该标记为预期答案