我使用phpmailer在線表單發送電子郵件,並嘗試使用爲每個循環定製主體,特別是取消訂閱按鈕。我目前只使用我的兩封個人電子郵件,但沒有加密用於測試目的。一旦實際開始工作,我將添加加密,因爲它應該。phpmailer for each loop定製主體
我的PHP代碼:
$mail = new PHPMailer;
/*php mailer settings*/
//All settings for php mailer here - working fine, email sends
/*for each loop to send bcc to each email and customize body*/
//array of emails - really loading from database with while loop
$subs_email("[email protected]","[email protected]");
foreach ($subs_email as $email) {
$mail->addBCC($email);
$mail->Body = '<p>This is the body text</p><a href="http://www.website.com/unsubscribe.php?email='.$email.'">Unsubscribe</a>';
}
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
}
使用電子郵件上面的代碼的變化會送(BCC)的陣列中的兩封電子郵件,但所有電子郵件會得到相同的退訂鏈接/電子郵件地址。注意兩次都使用email1 @。
發郵件到郵件地址1: 正文文字看起來不錯。
<a href="http://www.website.com/[email protected]">Unsubscribe</a>
電子郵件到郵箱地址2: 正文文本看起來不錯。
<a href="http://www.website.com/[email protected]">Unsubscribe</a>
這顯然不是我想要的。當我測試並在空白頁面上回顯每個循環文本時,它會顯示每個自定義退訂鏈接,因爲它應該爲每個電子郵件地址一個。
任何幫助表示讚賞,並讓我知道如果你需要更多或。
工作的代碼基礎上創建的答案使用,而不是addAddress addBCC 主要問題
foreach ($subs_email as $email) {
$mail->addAddress($email);
$mail->Body = '<p>This is the body text</p><a href="http://www.website.com/unsubscribe.php?email='.$email.'">Unsubscribe</a>';
if (!$mail->send()) {
echo "Mailer Error" . $mail->ErrorInfo . '<br />';
break; //Abandon sending
}
// Clear all addresses and attachments for next loop
$mail->clearAddresses();
}
所以..你是否在foreach循環或之後發送郵件?因爲如果你發送它後,你的身體和鏈接將根據上次迭代的電子郵件進行設置。 如果你在foreach循環內發送它,肯定還有別的東西沒有共享,導致錯誤 – Cashbee
@Cashbee它在發送之後。所以你的評論是有道理的。我只是用循環中的send()重試了它,但現在每個地址都會得到兩封電子郵件,一封是正確的電子郵件地址鏈接,另一封是另一封郵件......我已將代碼更新爲原來的內容。 –