簡體   English   中英

通過SMTP發送兩封電子郵件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM