2013-07-10 4 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

From :의 $ name 값은 전자 메일이어야한다고 생각합니다. –

+1

게시하기 전에 항상 구글. – zzlalani

답변

1

변경

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

모든 것을 줄

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

다른, 환호 좋은 것 같습니다!

+2

당신은 여전히'. ='가 필요합니다. 그렇지 않으면 이전 변수 선언을 덮어 쓰지 않고 추가하지 않을 것입니다. – James

+0

그래, 내 잘못, 식별 주셔서 감사합니다. – zzlalani

+0

@zzlalani :: 시도했지만이 작동하지 않습니다. '보낸 사람'을 삭제하면 문제없이 메일이 배달됩니다. – NaaN

0

mail()을 직접 사용하지 말고 그물에서 보내는 메일에 대한 많은 premade 클래스 중 하나를 찾으십시오!

메일 보내기에 대해 자세히 살펴보면 PHPMailer 또는 유사한 메일 라이브러리에서 이미 해결 된 많은 문제에 직면하게됩니다.

게다가, 귀하의 코드는 Mailheader-Injection 공격에 취약하기 때문에 "스팸 메일 응용 프로그램을 만드는 방법"에 대한 완벽한 예입니다!

관련 문제