2013-11-05 70 views
0

開始時電子郵件根本沒有被髮送,但後來我在函數中使用了「-f」參數,然後發送到外部地址(到目前爲止測試過的Gmail和Hotmail),但它不適用於域中的地址。只是想知道它是否在代碼中,或者它是服務器設置的問題?PHP郵件發送到外部電子郵件地址但不是內部

if ($Valid == 1) { 
    $_POST = array_map('strip_tags', $_POST); 
    $_POST = array_map('stripslashes', $_POST); 

    $To = "[email protected]"; 

    $Subject = "Online Driver Application"; 
    $Body = "All the values of the form that was filled out (removed because there was a lot and it doesn't affect the problem)"; 

    $Headers = 'MIME-Version: 1.0' . "\r\n"; 
    $Headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
    $Headers .= 'From: Company <[email protected]>' . "\r\n"; 
    $Headers .= 'Reply-To: [email protected]' . "\r\n"; 
    $Headers .= 'X-Mailer: PHP/' . phpversion(); 

    mail($To, $Subject, $Body, $Headers, [email protected]); 

    echo '<div class="success">Thank You! Your form has been successfully submitted.</div>'; 
} else { 
    if ($ErrorMsg != '') { 
     echo '<div class="error">'.$ErrorMsg.'</div>'; 
    } 

同樣,除非郵件功能中有[email protected],否則電子郵件根本不會被髮送出去。

謝謝。

+0

也許服務器設置問題,如果服務器有類似的Plesk或安裝的cPanel,但MX記錄指向其他地方(不同地址),服務器可能會看到電子郵件爲「內部」並跳過連接,並將郵件傳遞給自己。 –

+0

他們使用Cpanel。任何想法,我需要去看mx記錄? – ETx13

回答

0

代碼似乎沒問題。這可能是沒有正確設置的東西(如PHP.ini沒有SMTP服務器或防火牆阻止了某些內容)。另外,請確保換行符爲"\n"$Body我見過一些郵件服務器因此拒絕郵件。直接使用郵件總是很棘手。嘗試使用類似SwiftmailerPHPMailer的庫。這樣,您就不必擔心如何發送HTML,附件...

+0

我一直想做到這一點,但他們只給我訪問cpanel(我是新來的),我可以通過cpanel安裝所說的庫嗎? – ETx13

+0

@ ETx13是的,我想你可以。我有一個使用cPanel的主機,並且有一個文件管理器可以讓你上傳文件,但是如果有很多文件需要處理,這將是一件痛苦的事情。你也應該有一個FTP訪問... – AlexV

0

additional_parameters參數(-f或-r)可用於傳遞額外的標誌作爲命令行選項來配置爲程序發送郵件時使用,如sendmail_path配置設置所定義。例如,當使用帶有-f sendmail選項的sendmail時,可以使用它來設置信封發件人地址。

safe_mode中的additional_parameters(> 4.2.2)被禁用,並且mail()函數將公開警告消息並在使用時返回FALSE。

Web服務器運行的用戶應該作爲可信用戶添加到sendmail配置中,以避免在使用此方法設置信封發件人(-f)時將「X警告」標頭添加到郵件中。對於sendmail用戶,這個文件是/etc/mail/trusted-users

(或刪除sendmail和如果仍然問題安裝後綴(很容易)。)

相關問題