通过SMTP发送两封电子邮件

时间:2009-05-12 18:15:54

标签: php email smtp

我使用了两个PHP电子邮件脚本并通过我的SMTP服务器进行路由,当我执行此操作时,它会发送两封相同的电子邮件。

当我使用mail()时,这不会发生,但我宁愿使用SMTP。

为什么会出现这种情况的任何想法?

5 个答案:

答案 0 :(得分:1)

如果您多次设置“收件人”和/或“收件人”标头,SMTP服务器可能会将其解释为单独的电子邮件地址,因此您将收到多封电子邮件。

我建议使用PEAR Mail类。使用非常简单,并为您处理大部分工作。它支持多种后端,包括SMTP。同样,如果要扩展类以发送HTML电子邮件,Mail_Mime类可以非常好地处理它,提供设置纯文本正文和HTML正文的方法(如果收件人不支持HTML)。

答案 1 :(得分:0)

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!
    }
}   

到目前为止,这是当前的功能

答案 2 :(得分:0)

因此,如果你只使用PHPMailer而不编辑它的代码,那不是你的脚本的错。也许检查你的SMTP服务器的配置?

答案 3 :(得分:0)

根据你的代码,如果它是有错的类,你会期望两次获得“Message Sent OK”(我不明白为什么会发生这种情况)。如果你不这样做,那么我会看你的SMTP服务器(也许是通过支持电话)。

我假设您已禁用回复以在此情况下将其排除在原因之外?注意:我并不是说这会影响任何事情(除了你可能被归类为垃圾邮件)。

顺便说一下,我前段时间从PHPMailer搬到Swift Mailer&从来没有回头。如果你没有从支持中获得任何快乐,那么我至少尝试使用Swift Mailer进行测试。

答案 4 :(得分:0)

我同意da5id所说的,为什么不把第二条错误信息拿出来。你还检查了接收器他们是否真的得到2条消息?