我正在使用mailgun作为php的API服务来发送邮件。然而,我正在建立一个模块,我可以发送电子邮件给我的订阅者。
我使用下面的代码来实现同样的目的。
$builder = new MessageBuilder();
$builder->setFromAddress("[email protected]", 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
]
);
}
代码工作绝对正常,唯一的问题是,当邮件发送时,所有的收件人都被标记为 TO
和任何人都可以看到邮件在 TO
我想让邮件看起来像以个人身份发送给每个订阅者,而且它不应该被邮件服务器标记为垃圾邮件。
尝试以批处理邮件的方式发送
$mgClient = Mailgun::create(MAILGUN_API_KEY);
$builder= $mgClient->messages()->getBatchMessage("somedomain.com");
//regular stuff
$builder->setFromAddress("[email protected]", 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