В настоящее время я использую скрипт, который использует 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/YH:i:s',time()).'<br />'; echo "Estimated End Time: ".date('d/m/YH: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/YH:i:s]',time()).' Email '.$status.' to '.trim($email)."\n"); echo date('[d/m/YH:i:s]',time()).' Email '.$status.' to '.trim($email)."</br>"; flush(); sleep(10); }
Newsletter.php содержит только базовый код HTML / CSS.
Может кто-нибудь, пожалуйста, посоветуйте, как я могу изменить этот скрипт, чтобы сопровождать резервное копирование с открытым текстом?
Спасибо за любую помощь.
То, что вы ищете, называется множественной электронной почтой. Это тело содержит как 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!";
Вы должны изменить
Content-Type: text/html; charset=ISO-8859-1\n
Для получения дополнительной информации, пожалуйста, проверьте этот сайт