[英]Two emails when sent via SMTP
我使用了兩個PHP電子郵件腳本,並通過SMTP服務器路由它,盡管這樣做會發送兩個相同的電子郵件。
當我使用mail()時,這不會發生,但是我寧願使用SMTP。
為什么會發生這種情況的任何想法?
如果您多次設置“收件人”和/或“收件人”標頭,則SMTP服務器會將其解釋為單獨的電子郵件地址,因此您將收到多封電子郵件。
我建議使用PEAR Mail類。 使用非常簡單,可以為您處理許多工作。 它支持包括SMTP在內的多個后端。 同樣,如果要擴展類以發送HTML電子郵件,則Mail_Mime類可以很好地處理此問題,提供設置純文本正文和HTML正文的方法(以防收件人不支持HTML)。
function send_email($from, $fromname, $to, $subject, $body, $alt = '')
{
require_once('class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
$mail->IsSMTP(); // telling the class to use SMTP
try
{
$mail->Host = 'localhost'; // SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
//$mail->AddReplyTo($from, $fromname);
$mail->AddAddress($to);
$mail->SetFrom($from, $fromname);
$mail->Subject = $subject;
//$mail->AltBody = $alt; // optional - MsgHTML will create an alternate automatically
$mail->MsgHTML($body);
$mail->Send();
echo 'Message Sent OK';
}
catch (phpmailerException $e)
{
echo $e->errorMessage(); //Pretty error messages from PHPMailer
}
catch (Exception $e)
{
echo $e->getMessage(); //Boring error messages from anything else!
}
}
到目前為止,這是當前功能
因此,如果僅使用PHPMailer而不編輯其代碼,那不是腳本的錯。 也許檢查您的SMTP服務器的配置?
根據您的代碼,如果是錯誤的類,則希望兩次獲得“ Message Sent OK”(消息發送正常)的信息(不過我看不出為什么會發生這種情況)。 如果您不這樣做,那么我將在看您的SMTP服務器(也許通過致電支持人員)。
我假設您在這種情況下已禁用Reply-to以將其排除在外? 注意:我不建議這樣做會影響任何事情(除了您可能被歸類為垃圾郵件之外)。
順便說一句,我前段時間從PHPMailer移到Swift Mailer ,並且從沒有回過頭。 如果您不能從支持中獲得任何快樂,那么我將至少嘗試使用Swift Mailer進行測試。
我同意da5id所說的話,為什么不刪除第二條錯誤消息。 此外,您是否檢查過接收方,他們是否真的收到2條消息?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.