Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP中的SendGrid向邮件列表中的每个收件人发送单独的电子邮件_Php_Email_Sendgrid - Fatal编程技术网

使用PHP中的SendGrid向邮件列表中的每个收件人发送单独的电子邮件

使用PHP中的SendGrid向邮件列表中的每个收件人发送单独的电子邮件,php,email,sendgrid,Php,Email,Sendgrid,我发送电子邮件是为了通知我的用户系统中的某些更改 为了提高可交付性,我希望单独发送每封电子邮件,而不是作为一封带有长cc\bcc列表的电子邮件发送 我遇到的所有教程都谈到插件,以及将值数组绑定到消息中占位符的复杂方法 我正在寻找一种非常简单的方法来实现这一点,使用对SendGrid服务器的单个调用,最好使用XSMTP-API头,并且没有任何不必要的复杂情况 我已经在网上搜索了几个小时的解决方案,我可以自信地说,似乎没有适合我的解决方案,所以我不得不打开一个新的线程,尽管我很清楚这是一个常见的话题

我发送电子邮件是为了通知我的用户系统中的某些更改

为了提高可交付性,我希望单独发送每封电子邮件,而不是作为一封带有长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?

使用SendGrid SMTPAPI标头,这非常简单。当您发送邮件时,只需在
X-SMTPAPI
标题中的
地址中添加一个
数组,它将自动为列表中的每个人(而不是密件抄送或抄送)生成一封新的电子邮件。例如:

"X-SMTPAPI": {
  "to": [
    "ben@example.com",
    "Joe Smith <joe@example.com>"
  ]
}

感谢swift,虽然我确实需要启用名称空间来运行代码,不是吗?不幸的是,我的生产服务器正在运行PHP5.2,因此我无法使用任何需要名称空间的功能和库。是否有类似的解决方案使用swiftMail库?。非常感谢,O。SendGrid库只是包装了SwiftMailer,所以您可以只看代码就知道它是如何工作的。基本上,您应该按照我在答案前半部分中的建议,添加一个
X-SMTPAPI
标题()
$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);