2014-10-25 3 views
-1

이 코드는 메일을 보내기 위해 사용하고 있지만 불행히도 메일은 스팸 폴더로 이동합니다. Gmail과 Hotmail을 모두 시도했지만 대소 문자가 같습니다. PHP 코드는 다음과 같습니다메일이 스팸 폴더로 이동합니다 (PHP 메일 기능)

<?php 
if($_POST) 
{ 
//check if its an ajax request, exit if not 
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') { 
    die(); 
} 

$to_Email  = "[email protected]"; //Replace with recipient email address 
$subject  = 'My email from Somebody out there...'; //Subject line for emails 

//check $_POST vars are set, exit if any missing 
if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userMessage"])) 
{ 
    die(); 
} 

//Sanitize input data using PHP filter_var(). 
$user_Name  = filter_var($_POST["userName"], FILTER_SANITIZE_STRING); 
$user_Email  = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL); 
$user_Message  = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING); 

//additional php validation 
if(strlen($user_Name)<4) // If length is less than 4 it will throw an HTTP error. 
{ 
    header('HTTP/1.1 500 Name is too short or empty!'); 
    exit(); 
} 
if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation 
{ 
    header('HTTP/1.1 500 Please enter a valid email!'); 
    exit(); 
} 
if(strlen($user_Message)<5) //check emtpy message 
{ 
    header('HTTP/1.1 500 Too short message! Please enter something.'); 
    exit(); 
} 

//proceed with PHP email. 
$headers = 'From: '.$user_Email.''; 

@$sentMail = mail($to_Email, $subject, $user_Message .' -'.$user_Name, $headers); 

if(!$sentMail) 
{ 
    header('HTTP/1.1 500 Could not send mail! Sorry..'); 
    exit(); 
}else{ 
    echo 'Hi '.$user_Name .', Thank you for your email! '; 
    echo 'Your email has already arrived in my Inbox, all I need to do is Check it.'; 
} 
} 
?> 

내가 추가하거나 실제 서버 도메인 주소로 From 헤더를 설정하려면이 문제를

+1

글쎄, 지옥에는 사용자의 이메일을 통해 전송할 수있는 방법이 없습니다. 이것은 아마도 스팸 탐지기를 트립합니다. – Daedalus

+1

메일 클라이언트 내의 스팸 기능은 메일 내의 특정 키워드를 검색합니다.이 단어가 일치하면 스팸 폴더로 이동합니다. 이메일로 보내는 콘텐츠를 수정할 수도 있습니다. 또한 발신자가 중요합니다. 나는 당신의 웹 사이트에서 info @<- 이메일 클라이언트 또는 귀하의 웹 사이트에서 no-reply @<- email 클라이언트와 같은 것을 사용할 것입니다. – Dorvalla

답변

4

시도를 해결하기 위해 수정해야 누락 된 기능은 (거기 즉 [email protected]), 사용자 이메일을 Reply-To 헤더로 이동하십시오. 그렇게하면 안티 스팸 필터를 진정시킬 수 있습니다. 내가 코멘트에 말했듯이

$headers = 'From: [email protected]' . "\r\n"; 
$headers .= 'Reply-To: '.$user_Email.''; 
0

, 당신은 귀하의 콘텐츠에보고 싶어 할 수도 있습니다.

또한 이메일 발신자는 이메일 수신자와 같습니다. 나는 그것을 수정할 것이고, 당신은 답장 할 수없는 정적 이메일이된다.

또한 메일에는 5 가지 변수가 있지만 이유는 확실하지 않지만 헤더를 사용하는 경우 메일을 거기에 넣을 수 있습니다.

예. 당신은 싶어 체크 특정 버튼을 누르면 이후

$message = wordwrap($message, 70); 
    $to = "[email protected]"; // change this propperty for your own email 
    $subject = "Een gebruiker heeft een vraag of opmerking"; 

    $body = 'yadidyadi'. $message ; 
    $headers = "MIME-Version: 1.0" . "\r\n"; 
    $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; 
    $headers .= "From: [email protected]"; // make this one static.. i made mine noreply 

    if (mail ($to, $subject, $body, $headers)) { 
     echo 'yay, mail send'; 
    } 

편집 그냥 지적하고,이 귀하의 질문에, 첫 번째 검사와 관련이없는의 if($_POST)는 좀 관련이 없습니다. 다른 프로세스에 대해이 파일에 다른 코드를 입력하면 게시물을 편집하고 데이터베이스에 항목을 입력해도이 파일 전체가 호출되지만이 전체 메일은 어쨌든 해고됩니다.

관련 문제