Отправка информационных бюллетеней в формате HTML с использованием обычного текста - PullRequest
6 голосов
/ 09 января 2012

В настоящее время я использую скрипт, который использует file_get_contents для получения содержимого php-файла, а затем отправляет его по электронной почте списку клиентов.Я хотел бы изменить сценарий, чтобы разрешить использование обычного текста для снижения риска быть помеченным как спам.

Это сценарий, который у меня есть в данный момент:

    function sendit($to,$subject,$body)
{
$headers    =   "To: <{$to}>\n".
                    "From: Test Newsletter Admin <newsletter@test.co.uk>\n".
                    "Reply-To: Test Newsletter Admin <newsletter@test.co.uk>\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);
 }

Информационный бюллетень.php просто содержит базовый код HTML / CSS.

Может кто-нибудь посоветует, как я могу изменить этот сценарий, чтобы он сопровождал простой текстовый отступ?

Спасибо за любую помощь.

Ответы [ 2 ]

5 голосов
/ 09 января 2012

То, что вы ищете, называется электронной почтой. Его тело содержит как HTML, так и текст, ограниченный так называемой «границей». Почтовый клиент сам определит, будет ли он отображать HTML или текстовую версию письма, основываясь на его возможностях и пользовательских предпочтениях.

Пример того, как вы можете настроить это ( источник ):

$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 <me@me.com>";
$bcc = "You <you@you.com>, Them <them@them.com>";
$from = "Me.com <me@me.com>";
$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 голосов
/ 09 января 2012

Вы должны изменить

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

Для получения дополнительной информации, пожалуйста, проверьте этот сайт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...