다음과 같은 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에서 수신되면 나타나는
헤더부터를 무시하고 단지 리스팅 내 웹 호스팅 제공 업체의 서버에서 것을 말합니다.
내 응용 프로그램을 더 부 풀릴 추가 라이브러리를 사용하지는 않겠지 만 제안 해 주셔서 감사합니다. – jezzipin
모든 응용 프로그램에서 사용해야하는 핵심 라이브러리가 있습니다. 전자 메일이 관련되면 swiftmailer는 PHP 커뮤니티에서 꽤 표준입니다. –
@ JohnCartwright - 두 번째 요점의 대안은 SPF를 설정하는 것입니다. http://en.wikipedia.org/wiki/Sender_Policy_Framework – andrewsi