2012-01-09 17 views
5

Şu anda bir php dosyasının içeriğini almak için file_get_contents kullanan bir komut dosyası kullanıyorum ve daha sonra bunları bir e-postayla müşterilerin listesine gönderir. Spam olarak işaretlenme riskini azaltmak için düz metin geri dönüşüne izin vermek için komut dosyasını değiştirmek istiyorum.Düz metin geri dönüşü ile HTML haber bültenleri gönderme

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 sadece temel HTML/CSS kodunu içerir:

Bu

şu anda var betik.

Birisi, düz metin geri dönüşü için bu komut dosyasını nasıl değiştirebileceğimi önerir misiniz?

Yardımlarınız için teşekkür ederiz.

+0

sen [SwiftMailer] gibi bir kitaplığı kullanarak düşündünüz mü (http://swiftmailer.org/)? Bu [cevap] (http://stackoverflow.com/a/29345590/987864), HTML ve düz metin postası göndermek ne kadar kolay olduğunu açıklar. – Daan

cevap

5

Bir çok parçalı e-posta olarak bilinir arıyoruz? Kontrol ediniz değiştirmek gerekir. Gövde hem HTML hem de metin içeriyor ve sözde "sınır" ile sınırlandırılıyor. E-posta istemcisi, kullanıcının yeteneklerine ve kullanıcı tercihlerine bağlı olarak postanın HTML veya Metin sürümünü gösterecekse kendini belirler.

bu kurabilirsiniz nasıl bir örnek (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

Bunu denedim ve e-posta spam klasöründe bitti. http://www.mail-tester.com/, "Mesaj% 10 ila% 20 HTML gizleme" diyor. Üstelik, belirtilen e-posta adresinden posta göndermeme izin verilmediğimi söylüyor. – erdomester

0

Sen

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

daha Infos için, bu site

İlgili konular