2013-07-10 154 views
0

我試圖使用以下方法發送郵件。但如果我使用$headers功能不起作用。否則它工作正常。我哪裏出錯了?發送郵件功能不起作用

if(isset($_REQUEST['submit'])) 
{ 

$name=$_REQUEST['name']; 
$email=$_REQUEST['email']; 
$phone=$_REQUEST['phn']; 
$country=$_REQUEST['country']; 
$company=$_REQUEST['company']; 
$subject=$_REQUEST['subject']; 
$enquiry=$_REQUEST['message']; 

$subject = "xyz.com-".$subject; 
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers .= "From: ".$name."\r\n"; 
$headers .= "Reply-To: ".$email."\r\n"; 

$msg=" 
<table><tr><td>Name</td><td>".$name."</td></tr> 
<tr><td>Email:</td><td>".$email."</td></tr> 
<tr><td>Contact Number:</td><td>".$phone."</td></tr> 
<tr><td>Country:</td><td>".$country."</td></tr> 
<tr><td>Company:</td><td>".$company."</td></tr> 
<tr><td>Message:</td><td>".$enquiry."</td></tr> 
</table>"; 

if(mail("[email protected]",$subject,$msg,$headers)) 
{ 
$msg1="Email Sent Successfully"; 

} 
else 
{ 
$msg1='Mail not sent. Please try again'; 

} 
} 
+0

我認爲$ name中的值應該是一封電子郵件。 –

+1

在發帖之前總是google。 – zzlalani

回答

1

更改線路

$headers .= "From: ".$name."\r\n"; 

$headers .= "From: ".$name."<".$email.">"."\r\n"; 

一切似乎好,乾杯!

+2

您仍然需要'。='否則它會覆蓋前面的變量聲明而不會附加到它。 – James

+0

是的我的不好,感謝識別.. – zzlalani

+0

@zzlalani ::試過這個,但不工作。如果我刪除了「發件人」,則郵件無任何問題即可發送。 – NaaN

0

不要直接使用mail(),而是從網絡中發現郵件發送的許多預製類之一!

隨着您深入瞭解mailsending,您將面臨許多問題,這些問題已經在諸如PHPMailer等郵件庫中解決。

除此之外,您的代碼是「如何構建垃圾郵件應用程序」的完美示例,因爲它容易受到Mailheader-Injection攻擊!