2013-07-19 3 views
3

다음과 같은 PHP 스크립트를 사용하여 내 서버의 .txt 파일에서 HTML 템플릿을로드하고 str_replace를 사용하여 이메일 내용을 보내기 전에 템플릿을 채 웁니다.HTML 이메일을 PHP를 통해 보내서 Gmail에서 스팸으로 처리했습니다.

처음에는 서버에서 내 웹 메일 주소를 제대로 작동 한 내 mailer_send 기능의 '받는 사람'필드로 하드 ​​코딩하려고했습니다. 이메일 템플릿이 완벽하게 표시되었습니다. 그러나 Gmail 계정으로 보내려고하면 정크로 표시되고 HTML은 일반 텍스트로 표시됩니다. Gmail에서 메일을 올바르게 처리 할 수 ​​있도록 이메일에 추가해야 할 헤더가 있는지 여부를 아는 사람이 있습니까?

이상 적으로 내 서버의 웹 메일을 통해 나에게 전자 메일을 보내고 질문에 감사하는 사용자에게 자동 응답을 보내고 싶지만 메시지가 항상 스팸으로 취급되면 불가능합니다.

<?php 
    function mailer_send($mailer_recipient, $mailer_subject, $mailer_message){ 
     $mailer_headers = 'From: [email protected]' . '\r\n' . 
     'X-Mailer: PHP/' . phpversion() . '\r\n' . 
     'MIME-Version: 1.0\r\n' . '\r\n' . 
     'Content-Type: text/html; charset=ISO-8859-1\r\n'; 
     mail($mailer_recipient, $mailer_subject, $mailer_message, $mailer_headers); 
    } 

$name = $_POST['inputName']; 
$email = $_POST['inputEmail']; 
$message = strip_tags($_POST['inputMessage']); 
$template = file_get_contents('email_templates/template.txt'); 
$template2 = $template; 
$template = str_replace('[email_content]',$message, $template); 

    mailer_send('[email protected]','Test Email',$template); 

$message2 = '<h2>Thanks..</h2><br/><p>Dear' . $name . '</p><br/><p>Thanks for your enquiry. Jason will get back to you with a quote as soon as possible.</p>'; 
$template2 = str_replace('[email_content]', $message2, $template2); 
mailer_send($email,'Thankyou for your Enquiry',$template2); 
    ?> 

미리 감사드립니다. 추가

: 이메일은 Gmail에서 수신되면 나타나는

헤더부터를 무시하고 단지 리스팅 내 웹 호스팅 제공 업체의 서버에서 것을 말합니다.

답변

3

Gmail이 이메일을 스팸으로 의심하는 이유는 백만 가지입니다. 당신의 송신자 호스트가 서버와 동일한 IP에서 오는 및 올바른 MX 레코드가되어 있는지, 둘째>http://swiftmailer.org/

- 내가 할 것

가장 먼저하는 일이 제대로 헤더를 다루는 라이브러리를 사용합니다.

+0

내 응용 프로그램을 더 부 풀릴 추가 라이브러리를 사용하지는 않겠지 만 제안 해 주셔서 감사합니다. – jezzipin

+0

모든 응용 프로그램에서 사용해야하는 핵심 라이브러리가 있습니다. 전자 메일이 관련되면 swiftmailer는 PHP 커뮤니티에서 꽤 표준입니다. –

+0

@ JohnCartwright - 두 번째 요점의 대안은 SPF를 설정하는 것입니다. http://en.wikipedia.org/wiki/Sender_Policy_Framework – andrewsi

관련 문제