2017-03-31 39 views
0


我正在做一個郵件發送函數從一個聯繫人窗體內的苗條3項目。
我得到電子郵件從$請求 -消息場數據> getParams()方法,然後將其放置到$ email_message的信息直接發送到我的郵箱。並且電子郵件未送達。 有趣的是,沒有getParams()數據(我只是用任何字符串替換它),電子郵件是交付,我收到它。所以可能郵件的語法是正確的,我的主機上啓用了電子郵件。
如果我在郵件()代碼之前回顯郵件,它會正確打印郵件,因此會收到表單中的數據。 所以我無法弄清楚這裏出了什麼問題。
我嘗試使用print_r(error_get_last())但它只返回一個空白頁面。
請有人可以幫忙嗎?非常感謝!
我的代碼:php的郵件()沒有發送苗條3 getParams()數據

$data = $request->getParams(); 
$name = $data['name']; 
$email_from = $data['email']; 
$message = $data['message']; 

$email_message = "Name: ".$name."Message: ".$message; 

$email_to = "[email protected]"; 
$email_subject = "Message from website"; 

$headers = 'From: '.$email_from."\r\n". 
      'Reply-To: '.$email_from."\r\n" . 
      'X-Mailer: PHP/' . phpversion(); 
$send = mail($email_to, $email_subject, $email_message, $headers); 
if($send) 
    { 
     echo 'Sent!'; 
    } else { 
     print_r(error_get_last()); 
    } 
die(); 

更新:現在它打印出「已發送!」,可是我還是沒有得到任何郵件給我的電子郵件地址。
對於標記爲重複的人,我也讀過該答案但不成功。這個問題是不同的,因爲它沒有從聯繫人表單傳遞的數據成功地發送電子郵件,它只有在添加getParams()數據時纔會出現問題。所以我希望有經驗的Slim或PHP的人可以提供幫助。如果你不真正理解這個問題,請不要將它們標記爲重複。

+2

什麼是PHP錯誤日誌?可能你的print_r從不執行,因爲腳本已經崩潰了。 – mkaatman

+0

嗨,我提交表單時,錯誤日誌沒有報告任何內容。顯示的唯一錯誤是幾個小時前發生的另一個問題。 –

回答

1

99.9%的人試圖郵寄PHP放棄。

PHP只爲你做了一半的工作,它格式化外發電子郵件,但它不做實際的發送。什麼?那麼它取決於你使用的操作系統,即使如此,它依賴於你想使用的郵件服務器。

我只爲Debian/Linux設置了這個環境。我會安裝postfix(apt install postfix),進行配置並啓動進程。只有這樣mail函數才能工作。但是它仍然可能被某些電子郵件服務器(即gmail)拒絕,因爲它沒有加密。

祝你好運。