我运行此脚本向每个用户发送一封电子邮件。邮件发送正常(每个用户一个),但在发送的电子邮件中,所有其他地址都显示在标题中。
$all_users = array(); // intialzie array
while ($usuario = mysqli_fetch_array($resultado, MYSQLI_ASSOC)) {
$usermail = $usuario['email'];
$hash = $usuario['hash'];
mysqli_query($dbc, "UPDATE newsletter SET enviado = '1' WHERE email='$usermail' ");
$all_users[] = $usermail; // push all emails first
}
// then send
try {
$email->setTos($all_users)
->setFrom("no_responder@test.com.ar")
->setFromName("test")
->setReplyTo("no_responder@test.com.ar")
->setSubject("Test")
->setHtml('test');
$result = $sendgrid->send($email);
echo "enviado";
} catch(\SendGrid\Exception $e) {
echo $e->getCode() . "\n";
foreach($e->getErrors() as $er) {
echo $er;
}
}
?>
如何使用sendgrid(bcc - 盲目抄送)单独发送其他电子邮件?
答案 0 :(得分:1)
您是否更新了SendGrid PHP library?最新版本使用v3 of the WebAPI,它可以纠正令人困惑的To:数组功能。
问题是,您现在正在做的是填充本机SMTP级别To,这就是您可以查看所有地址的原因。在v2 API中,您需要填充x-smtpapi
字段的to
数组,以确保SendGrid splits out all the addresses。
我强烈建议您更新PHP库&利用v3 API消除了这种混淆,并允许您以更合理的方式设置每个收件人。