2016-05-03 104 views
-2

我的網站上有一個簡單的表單。人們留下一個名字和電子郵件。他們會發送一個鏈接到下載,我發送他們的數據。PHP無法從主機發送郵件

所有這些都可以在我的測試服務器上運行,但不能運行。我的提供商對發送郵件很挑剔,並希望有一個合適的來自adres的聲明。

問題:我該如何解決這個問題。我有一個從ADRES是標題:

$from = '[email protected]'; 
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers .= 'From: In2Motivation <{$from}>' . "\r\n"; 
mail($to, $subject, $message, $headers,); 

我也試過:mail($to, $subject, $message, $headers, '-f [email protected]');

但它仍然不會發送任何東西。這是哪裏出錯?它是我的腳本還是它在我的提供者端?

大家可以幫幫我嗎?非常感謝!!!

+0

可能是一個愚蠢的問題。你知道郵件服務器是否安裝在你的現場機器上嗎? – castis

+0

您的主人在發送之前可能需要授權;或者可能需要您登錄然後發送。這裏有很多可能性你檢查過日誌文件嗎?檢查你的php.ini和sendmail.ini設置,如果你可以訪問(大多數主機將允許你至少查看這些)。 –

+0

這是2016年,人們仍然試圖使'mail()'工作... –

回答

1

變量$from不被內部單引號擴大,使用雙引號代替:

<?php 
//debug start - comment on production 
error_reporting(E_ALL); 
ini_set('display_errors', '1'); 
//debug end 
$to  = '[email protected]'; 
$subject = 'the subject'; 
$message = 'hello'; 
$headers = "From: In2Motivation <{$from}> \r\n" . 
      'MIME-Version: 1.0' . "\r\n" . 
      'Content-type: text/html; charset=iso-8859-1' . "\r\n". 
      'Reply-To: [email protected]' . "\r\n" . 
      'X-Mailer: PHP/' . phpversion(); 

if(mail($to,$subject,$message,$headers)){ 
    echo "email sent"; 
}else{ 
    echo "email failed"; 
} 
+0

有關字符串插值的更多信息,請參見[文檔](http://php.net/manual/en/language.types.string.php#language.types.string.parsing)。 – shamsup