Düz metin / HTML e-posta mac posta istemcisi çalışmıyor

2 Cevap php

Aşağıdaki kod i kullanıyorum kodudur. Bu Thunderbird çalışıyor ama mac posta istemcisi (ve ben Microsoft tarafından yapılan bir şey varsayalım. Ben şu anda bunu sınamak için bu erişimi yoktur). I çeşitli posta istemcileri huyların farkında olduğum kadar, ben bu afallamış ediyorum! Bu oldukça kendini açıklayıcı ama ben okuyucu artırmak için düz metin ve html e-postalar göndermek için çalışıyorum. Herhangi bir yardım çok takdir.

DÜZENLEME

Ben içeriği ne olursa olsun gönderilen olsun ama thunderbird de doğru mesajı görüntüler, ancak mac posta istemcisi Eğer son PHP İlk PHP-alt gelen tüm şey almak olduğunu açıkladı olmalı

<?php
//define the receiver of the email
$to = 'youraddress@example.com';
//define the subject of the email
$subject = 'Test HTML email';
//create a boundary string. It must be unique
//so we use the MD5 algorithm to generate a random hash
$random_hash = md5(date('r', time()));
//define the headers we want passed. Note that they are separated with \r\n
$headers = "From: webmaster@example.com\r\nReply-To: webmaster@example.com";
//add boundary string and mime type specification
$headers .= "\r\nContent-Type: multipart/alternative; boundary=\"PHP-alt-".$random_hash."\"";
//define the body of the message.
ob_start(); //Turn on output buffering
?>
--PHP-alt-<?php echo $random_hash; ?> 
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

Hello World!!! 
This is simple text email message. 

--PHP-alt-<?php echo $random_hash; ?> 
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

<h2>Hello World!</h2>
<p>This is something with <b>HTML</b> formatting.</p>

--PHP-alt-<?php echo $random_hash; ?>--
<?
//copy current buffer contents into $message variable and delete current output buffer
$message = ob_get_clean();
//send the email
$mail_sent = @mail( $to, $subject, $message, $headers );
//if the message is sent successfully print "Mail sent". Otherwise print "Mail failed" 
echo $mail_sent ? "Mail sent" : "Mail failed";
?>

2 Cevap

Denemek ve kendi mailler rulo yerine, örneğin deneyin PHPMailer. Bu parçalı / alternatif için çok iyi bir destek var. Bu kendi çözümünüzü rulo daha bu entegre etmek çok daha kolaydır. Ben orada oldum - garip MIME sorunlar etrafında durmadan çalıştıktan sonra, ben bu geçiş, benim el yapımı mailler düştü ettik, ve ben kaçmadım zamanda başka şeyler üzerinde duruldu.

Diğer bir deyişle, tekerlek kalkmasından yoktur. Kendinizi bunu yaparken iyi bir meydan okuma olabilir ve sadece çalışmak istiyorsanız, işlemi sırasında çok şey öğreneceksiniz rağmen, bu adamlar sizin için karmaşıklığı ile ele alınmıştır.

Doğru çıktı tamponlama kullanarak değil - ob_end_clean, sen ob_get_contents Bunun için ihtiyaç yakalanan çıktı dönmez görmek için man sayfasına bakın:

$message =ob_get_contents();
ob_end_clean();