2016-08-29 55 views
2

我運行此腳本以向每個用戶發送一封電子郵件。郵件發送正常(每個用戶一個),但在發送的所有電子郵件中,地址顯示在標題中。包含在標題中的Sendgrid電子郵件數組

$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("[email protected]") 
->setFromName("test") 
->setReplyTo("[email protected]") 
->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

' - > setBcc' ....? –

+0

已經嘗試過,錯誤400缺少目標電子郵件 – Santiago

+1

你仍然必須至少有一個'To:'。發送給你自己,或黑洞地址。 –

回答

1

你是否更新了SendGrid PHP library?最新版本使用v3 of the WebAPI,它糾正了令人困惑的To:數組功能。

問題是,你現在正在做的是填充本地的SMTP級別,這就是爲什麼你可以看到所有的地址。在v2 API中,您需要填充x-smtpapi字段的to陣列,以確保SendGrid splits out all the addresses

我強烈建議使用v3 API更新您的PHP庫&,這樣可以消除這種混淆,並讓您以更合理的方式設置每個收件人。

+0

有什麼我應該改變到腳本的開始?要求( 「sendgrid-PHP/sendgrid-php.php」); $ sendgrid = new SendGrid('myapikey'); $ email = new SendGrid \ Email(); – Santiago

+0

這是我根據更新日誌的版本,v3.2.0 – Santiago

+1

每個[自述文件](https://github.com/sendgrid/sendgrid-php/blob/master/README.md)庫的最新版本是5,並且需要最新版本的PHP。您需要重新編譯腳本才能使用新功能。 – jacobmovingfwd