PHP邮件程序发送1封额外的空邮件root@localhost

PHP邮件程序发送1封额外的空邮件root@localhost,php,smtp,sendmail,phpmailer,mediatemple,Php,Smtp,Sendmail,Phpmailer,Mediatemple,我目前在MediaTemple网格服务器上遇到此问题 我正在使用PHP Mailer,我有以下代码: require_once("inc/class.phpmailer.php"); // Mail from contact form for me $mail = new PHPMailer(); $mail -> IsSMTP(); $mail -> CharSet = "UTF-8"; $mail -> SetFrom($_POST["email"],$_POST["n

我目前在MediaTemple网格服务器上遇到此问题

我正在使用PHP Mailer,我有以下代码:

require_once("inc/class.phpmailer.php");

// Mail from contact form for me

$mail = new PHPMailer();
$mail -> IsSMTP();
$mail -> CharSet = "UTF-8";
$mail -> SetFrom($_POST["email"],$_POST["name"]);
$mail -> AddReplyTo($_POST["email"],$_POST["name"]);
$mail -> AddBCC("myaddress@mydomain.yep");

$mail -> Subject = "Mail Subject";
$body = "... some html ...";
$mail -> MsgHTML($body);

// Automatic mail for the person that contacted me

$mail_customer = new PHPMailer();
$mail_customer -> IsSMTP();
$mail_customer -> CharSet = "UTF-8";
$mail_customer -> SetFrom("contact@mydomain.yep","Contact");
$mail_customer -> AddReplyTo("contact@mydomain.yep","Contact");
$mail_customer -> AddAddress($_POST["email"],$_POST["name"]);

$mail_customer -> Subject = "Thank you for contacting us!";
$body_customer = "... some html ...";
$mail_customer -> MsgHTML($body_customer);

$mail -> Send();
$mail_customer -> Send(); 
当这一切结束时,没有错误,但出于某种原因,我收到了三封电子邮件

  • $mail-来自$\u POST[“电子邮件”]
  • $mail-发件人root@localhost-此邮件正文完全相同,但没有$\u POST数据
  • $mail\U customer-在没有其他邮件的情况下到达$\U POST[“电子邮件”]

  • 这可能是什么原因造成的?我如何修复它?这与PHP邮件程序或服务器配置有关吗?

    尝试将第一封电子邮件包装到一个方法中,并使用if-else构造运行另一封

    请看下面的示例代码,了解我的建议

    试着用这种方式编写代码

    注意:我还没有测试过这个

        require_once('../class.phpmailer.php');
    
    
       //MAIL SENDER 1
        $mail             = new PHPMailer(); 
    
        $body             = file_get_contents('contents.html');
        $body             = eregi_replace("[\]",'',$body);
    
        $mail->AddReplyTo("name@yourdomain.com","First Last");
    
        $mail->SetFrom('name@yourdomain.com', 'First Last');
    
        $mail->AddReplyTo("name@yourdomain.com","First Last");
    
        $address = "whoto@otherdomain.com";
        $mail->AddAddress($address, "John Doe");
    
        $mail->Subject    = "PHPMailer Test Subject via mail(), basic";
    
        $mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
    
        $mail->MsgHTML($body);
    
        $mail->AddAttachment("images/phpmailer.gif");      // attachment
        $mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
    
        if(!$mail->Send()) {
          echo "Mailer Error: " . $mail->ErrorInfo;
        } else {
          //RUN THE OTHER METHOD EMAIL
          mail_customer();
        }
    
    //MAIL SENDER 2 WITHIN A METHOD
    
     function mail_customer(){   
        $mail             = new PHPMailer(); 
    
        $body             = file_get_contents('contents.html');
        $body             = eregi_replace("[\]",'',$body);
    
        $mail->AddReplyTo("name@yourdomain.com","First Last");
    
        $mail->SetFrom('name@yourdomain.com', 'First Last');
    
        $mail->AddReplyTo("name@yourdomain.com","First Last");
    
        $address = "whoto@otherdomain.com";
        $mail->AddAddress($address, "John Doe");
    
        $mail->Subject    = "PHPMailer Test Subject via mail(), basic";
    
        $mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
    
        $mail->MsgHTML($body);
    
        $mail->AddAttachment("images/phpmailer.gif");      // attachment
        $mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
    
        if(!$mail->Send()) {
          echo "Mailer Error: " . $mail->ErrorInfo;
        } else {
          //RUN THE OTHER METHOD EMAIL
    echo 'Mail Sent';
        }
    }
    

    我这样做了,但问题不在那里,你看,它没有给我一个错误消息,它确实发送邮件。问题是,它又发送了一个,这是不必要的。我与MT支持人员聊天,他们无法帮助我,但显然这可能与sendmail有关。不要将提交者的地址用作发件人地址-这将在所有yahoo和aol域中失败,并且在其他域中会越来越失败。从web服务器的地址发送。还要确保您使用的是最新的PHPMailer。在这两种情况下,您都在调用isSMTP,但没有设置主机,也没有提供ay用户名或密码属性。我从永远以来都是这样使用它的,它可以正常工作。这里的问题不是邮件发送,而是它发送了3封邮件,而不是2封,第三封是从root@localhost. 更奇怪的是,它只发送$mail而不发送$mail\u客户。减少您的问题-一次只做一件事,并准确地隔离它生成额外消息的位置。使用一个假的邮件服务器(请参阅PHPMailer文档中的指针),这样您就可以准确地看到发送的内容。一件非常奇怪的事情是,一开始我的邮件服务器没有isSMTP(),而且工作正常。。。第二天,当我添加isSMTP()时,所有的联系人表单都停止了工作,它们再次开始工作,但第三封“幻影”邮件开始发送,这可能是由于php邮件程序配置或服务器问题造成的吗?添加随机代码并不是追踪问题的明智方法。你希望它起作用是因为你做得对,而不是靠运气。如果要使用SMTP,请正确配置它。文档中有很多例子。