[英]PHPMailer: Error handing with BCC
我找不到針對我的特定情況的答案。
我正在開發一個系統,用於將出版物從數據庫發送到郵件列表。 我設法使用普通的loop
代碼來做到這一點。
但是,我只想使用循環來添加使用BCC
收件人,並且如果有人錯過了它,還可以維護error handling
,例如:
foreach($array as $user){
$mail->AddBCC( $user['email'], $user['customerName']);
}
try{
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment
$mail->AddReplyTo("noreply@company.com","Company Name");
$mail->SetFrom('noreply@company.com', 'Company Name');
$mail->Subject = "Company| E-Zine";
$mail->MsgHTML($ezineContent);
if(!$mail->Send()) {
//show error msg
} else {
//show successful msg
}
}catch (phpmailerException $e) {
//show error msg
}catch (Exception $e) {
//show error msg
}
$mail->ClearAddresses();
然后,我想使用一個呼叫將電子郵件發送給以上添加的所有收件人。
是否可以進行錯誤處理並查找是否有人因為地址不正確而未收到它?
跟蹤郵件操作成功的一種常見做法是使用電子郵件的“ Return-Path”標頭。
電子郵件及其標題示例:
Return-Path: server@return.xyz.com
Received: from localhost (mx-1-1 [127.0.0.1])
by mx-1.xyz.com (Postfix) with ESMTP id 3F81556754
for <jbradler@xyz.com>; Wed, 2 May 2012 12:27:18 +0200 (CEST)
To: jbradler@xyz.com
Subject: test mailing
From: Jens <jbradler@xyz.com>
Message-Id: <20120502102717.763ADA88004@xyz.com>
Date: Wed, 2 May 2012 12:27:17 +0200 (CEST)
Hi Folks, ...
因此,“發件人”標頭是您希望讀者看到的真實姓名和電子郵件地址的選擇,“返回路徑”的主要目的是指定指示未送達或其他郵件系統故障的郵件的地址將被發送([有關更多詳細信息,請參閱RFC 2821] [1])。
因此,基本上,此標頭是開始獲取未送達報告的正確位置。
我將如何做:
以下是具有唯一的Return-Path的示例:
Return-Path: 123-456@return.xyz.com
Received: from localhost (mx-1-1 [127.0.0.1])
by mx-1.xyz.com (Postfix) with ESMTP id 3F81556754
for <jbradler@xyz.com>; Wed, 2 May 2012 12:27:18 +0200 (CEST)
To: jbradler@xyz.com
Subject: test mailing
From: Jens <jbradler@xyz.com>
Message-Id: <20120502102717.763ADA88004@xyz.com>
Date: Wed, 2 May 2012 12:27:17 +0200 (CEST)
Hi Folks, ...
而已。
編輯-如何通過phpMailer實現:
/* define domain name for non-delivery reports */
define('RETURN_PATH_DOMAIN', 'return.xyz.com');
/* get current campaign id */
$campaignId = 123;
/* loop recipient list and send email */
foreach ($array as $userId => $user) {
try{
$mail = new PHPMailer();
$mail->HeaderLine('Return-Path', $userId . '-' $campaignId . '@' . RETURN_PATH_DOMAIN);
$mail->To($user['email'], $user['customerName']);
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
$mail->AddReplyTo("noreply@company.com","Company Name");
$mail->SetFrom('noreply@company.com', 'Company Name');
$mail->Subject = "Company| E-Zine";
$mail->MsgHTML($ezineContent);
if(!$mail->Send()) {
// show log
} else {
//show successful msg
}
} catch (Exception $e) {
// show error
}
}
據我所知,使用本地sendmail遇到了問題。 標頭Return-Path被本地MTA的某些配置代替。 如果是這種情況,請嘗試將SMTP用於可用的中繼主機。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.