2014-11-01 41 views
2

我目前有這個問題1個額外空郵件。PHP梅勒一個MEDIATEMPLE網格服務器發送帶有根@本地

我使用PHP梅勒和我有以下代碼:

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("[email protected]"); 

$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("[email protected]","Contact"); 
$mail_customer -> AddReplyTo("[email protected]","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(); 

當這是在沒有任何錯誤,但由於某種原因,我得到三個電子郵件。

  1. $郵件 - 從$ _ POST [ 「電子郵件」]
  2. $郵件 - 從根@本地 - 這具有完全相同的郵件正文,但沒有$ _ POST數據
  3. $ mail_customer - 即到達$ _POST [「email」]沒有其他郵件。

什麼可能會造成這一點,我怎麼能解決這個問題?它是否與PHP Mailer或服務器配置有關?

+0

不要使用提交者的地址作爲發件人地址 - 它將失敗所有雅虎和aol域名,並越來越多地爲其他人。從您的Web服務器的地址發送。另外請確保您使用的是最新的PHPMailer。在這兩種情況下,您都會調用'isSMTP',但不設置主機,也不提供用戶名或密碼屬性。 – Synchro 2014-11-02 09:56:29

+0

我一直都是這樣使用它,因爲它永遠不會有問題。這裏的問題不是郵件發送,而是發送3封郵件而不是2封,第三封郵件是從root @ localhost發送的無效電子郵件。更奇怪的是,它只發送$ mail而不是$ mail_customer。 – 2014-11-03 15:32:35

+0

減少你的問題 - 一次做一件事,並確切地隔離它產生額外的信息。使用假郵件服務器(請參閱PHPMailer文檔中的指針),以便您可以看到發送的內容。 – Synchro 2014-11-03 15:36:55

回答

0

嘗試在方法包裹你的第一封電子郵件,並使用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("[email protected]","First Last"); 

    $mail->SetFrom('[email protected]', 'First Last'); 

    $mail->AddReplyTo("[email protected]","First Last"); 

    $address = "[email protected]"; 
    $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("[email protected]","First Last"); 

    $mail->SetFrom('[email protected]', 'First Last'); 

    $mail->AddReplyTo("[email protected]","First Last"); 

    $address = "[email protected]"; 
    $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'; 
    } 
} 
+0

我這樣做了,但問題不在那裏,您看到它不會給我發送郵件的錯誤消息。事情是,它發送一個多餘的,這是不必要的。我與MT支持人員聊天,他們無法幫助我,但顯然它可能不得不使用sendmail做些事情。 – 2014-11-01 21:54:16