我正在发送电子邮件,以便通知我的用户系统中的某些更改。
为了提高可传性,我想单独发送每封电子邮件,而不是发送一封带有长cc \ bcc列表的电子邮件。
我遇到的所有教程都讲述了插件,以及将值数组绑定到消息中占位符的复杂方法。
我正在寻找一种相当简单的方法,使用单次调用到SendGrid服务器,最好使用XSMTP-API标头,并且没有任何不必要的复杂情况。
我已经在网上搜索了几个小时的解决方案了,我可以自信地说,似乎没有适合我的解决方案,所以我被迫开了一个新线程,虽然我很清楚这是一个常见的主题,我已经阅读了类似问题的多个主题。 不幸的是,没有人对我有帮助。
我仅限于旧版本的sendgrid或swiftMailer库,因为我的生产服务器不支持命名空间。
提前感谢, O操作。
伪代码:
$conn = $PDOStaticClass::getInstance();
$dbHelper = new DbPdoHelper($conn);
$mailList = $dbHelper->getMailinglist();
//$mailList now contains an associative array with the email addresses with of my clients, what's next?
答案 0 :(得分:2)
使用SendGrid SMTPAPI标头非常简单。您所要做的就是在发送邮件时在to
标题中添加X-SMTPAPI
地址数组,它会自动为列表中的每个人生成新的电子邮件(不是BCC或CC) )。例如:
"X-SMTPAPI": {
"to": [
"ben@example.com",
"Joe Smith <joe@example.com>"
]
}
Ben和Joe都会收到包含相同数据的单独电子邮件。如果要自定义每个获取的电子邮件,可以使用替换来完成该操作。有关详细信息,请参阅文档:http://sendgrid.com/docs/API_Reference/SMTP_API/index.html。
您还可以使用SendGrid PHP library来简化此过程:
$conn = $PDOStaticClass::getInstance();
$dbHelper = new DbPdoHelper($conn);
$sendgrid = new SendGrid('username', 'password');
$mail = new SendGrid\Mail();
$mail->setRecipientsInHeader(true);
$mailList = $dbHelper->getMailinglist();
foreach($mailList as $email) {
$mail->addTo($email);
}
// ...
$sendgrid->smtp->send($mail);