2012-01-09 1 views
5

현재 file_get_contents를 사용하여 PHP 파일의 내용을 가져온 스크립트를 사용하고 있으며 전자 메일을 통해 고객 목록에 보냅니다. 스팸으로 표시 될 위험을 줄이기 위해 일반 텍스트 대체를 허용하도록 스크립트를 변경하고 싶습니다.일반 텍스트 폴백을 사용하여 HTML 뉴스 레터 보내기

function sendit($to,$subject,$body) 
{ 
$headers = "To: <{$to}>\n". 
        "From: Test Newsletter Admin <[email protected]>\n". 
        "Reply-To: Test Newsletter Admin <[email protected]>\n". 
        "MIME-Version: 1.0\n". 
        "Content-Type: text/html; charset=ISO-8859-1\n"; 

    $mail_sent = @mail($to, $subject, $body, $headers); 
    return $mail_sent; 
} 
$content = file_get_contents('attach/newsletter.php'); 
//require_once('../../func.php'); 
set_time_limit(0); 
date_default_timezone_set('Europe/London'); 

$log = fopen('send'.date('dmY',time()).'.log','wb'); 

//$array = file('NonCustClean.txt'); 
$array = file('devaddresses.txt'); 
// Delay In Seconds between emails (must be INT) 
$delay = 10; 
$count = count($array); 

$end = time()+ ($delay*$count); 

echo "Start Time: ".date('d/m/Y H:i:s',time()).'<br />'; 
echo "Estimated End Time: ".date('d/m/Y H:i:s',$end).'<br />'; 
echo "(".dateDiff(time(),$end).")<br />"; 

foreach ($array as $email) 
{ 

$status = (sendit(trim($email), 'Test Newsletter',$content))?'Sent':'failed'; 
fwrite($log,date('[d/m/Y H:i:s]',time()).' Email '.$status.' to '.trim($email)."\n"); 
echo date('[d/m/Y H:i:s]',time()).' Email '.$status.' to '.trim($email)."</br>"; 
flush(); 
    sleep(10); 
} 

Newsletter.php 그냥 기본 HTML/CSS 코드가 포함되어 있습니다 :

내가 지금 가지고있는 스크립트입니다.

누군가이 일반 텍스트 대체 파일과 함께이 스크립트를 어떻게 변경할 수 있습니까?

도움 주셔서 감사합니다.

+0

당신은 [Swiftmailer]와 같은 라이브러리를 사용하는 방법에 대해 생각 해본 적이 (http://swiftmailer.org/)? 이 [answer] (http://stackoverflow.com/a/29345590/987864)는 HTML과 일반 텍스트 메일을 보내는 것이 얼마나 쉬운 지 설명합니다. – Daan

답변

5

당신이 다중 전자 메일로 알려져 있습니다 무엇을 찾고 있는지 확인하십시오 수정해야합니다. 본문에는 HTML과 텍스트가 모두 포함되어 있으며 소위 "경계"로 구분됩니다. 전자 메일 클라이언트는 기능 및 사용자 기본 설정에 따라 메일의 HTML 또는 텍스트 버전을 표시할지 여부를 결정합니다.

이를 설정하는 방법에 대한 예 (source는) :

$notice_text = "This is a multi-part message in MIME format."; 
$plain_text = "This is a plain text email.\r\nIt is very cool."; 
$html_text = "<html><body>This is an <b style='color:purple'>HTML</b>" . 
      "text email.\r\nIt is very cool.</body></html>"; 

$semi_rand = md5(time()); 
$mime_boundary = "==MULTIPART_BOUNDARY_$semi_rand"; 
$mime_boundary_header = chr(34) . $mime_boundary . chr(34); 

$to = "Me <[email protected]>"; 
$bcc = "You <[email protected]>, Them <[email protected]>"; 
$from = "Me.com <[email protected]>"; 
$subject = "My Email"; 

$body = "$notice_text 

--$mime_boundary 
Content-Type: text/plain; charset=us-ascii 
Content-Transfer-Encoding: 7bit 

$plain_text 

--$mime_boundary 
Content-Type: text/html; charset=us-ascii 
Content-Transfer-Encoding: 7bit 

$html_text 

--$mime_boundary--"; 

if (@mail($to, $subject, $body, 
    "From: " . $from . "\n" . 
    "bcc: " . $bcc . "\n" . 
    "MIME-Version: 1.0\n" . 
    "Content-Type: multipart/alternative;\n" . 
    "  boundary=" . $mime_boundary_header)) 
    echo "Email sent successfully."; 
else 
    echo "Email NOT sent successfully!"; 
+0

나는 이것을 시도하고 이메일은 스팸 폴더에서 끝났다. http://www.mail-tester.com/은 '메시지가 10 % ~ 20 %의 HTML 난독 화'라고 말합니다. 또한 그것은 내가 지정한 이메일 주소에서 메일을 보낼 수 없다고 말합니다. – erdomester

0

당신은

Content-Type: text/html; charset=ISO-8859-1\n 

더 많은 정보를 정기적으로,이 site