Пустое составное электронное письмо

Я использую PHP для отправки составного/смешанного сообщения (обычный текст, html и вложения). Однако, хотя это работает для большинства учетных записей, Yahoo, GMail и Sky, похоже, показывают пустые электронные письма. Где, как и все остальное, кажется, отображается электронная почта. БУДУ ОЧЕНЬ ПРИЯТНА ЛЮБАЯ ПОМОЩЬ!

Мои заголовки

$headers .= "Content-Type: multipart/mixed; boundary=\"mixed-" . $random_hash . "-mixed\"\n";
$headers .= "MIME-Version: 1.0\n"; 

И содержание;

--mixed-7df05b31-mixed  

Content-Type: multipart/alternative; boundary="alt-7df05b31-alt"  

--alt-7df05b31-alt 

Content-Type: text/plain; charset=utf-8 

            Hello how are you? I am just checking the mailing function.

            Hopefully this will work!

            Cheers.

--alt-7df05b31-alt 

Content-Type: text/html; charset=utf-8 

<div style="font-family:Arial, Helvetica, sans-serif; font-size: 10pt;">

<div> 


            Hello how are you? I am just <b>checking</b> the mailing function.<br><br>


            Hopefully this will work!<br><br>


            Cheers.</div></div>

--alt-7df05b31-alt--

--mixed-7df05b31-mixed 

Content-Type: text/plain; name="abc.txt"  
Content-Disposition: attachment; filename="abc.txt"   
Content-Transfer-Encoding: base64

SEVMTE8gSlVTVCBURVNUSU5HIC4uLiA=

--mixed-7df05b31-mixed--

person Simon R    schedule 31.08.2011    source источник


Ответы (3)


Не создавайте свои собственные сообщения MIME. используйте Swiftmailer или PHPMailer сделать это за вас.

person Marc B    schedule 31.08.2011
comment
потому что вы явно делаете что-то не так. Если бы ваша электронная почта была составлена ​​правильно, она без проблем отображалась бы в gmail/yahoo — я еще не видел, чтобы PHPMailer вызывал искаженное сообщение во всех моих проектах, независимо от того, где оно читается. - person Marc B; 31.08.2011
comment
Хотя есть некоторая ценность в том, чтобы научиться делать это в сыром виде. Мне было интересно, что не так с вашим кодом выше? - person Pacerier; 11.01.2012
comment
Я также обнаружил, что RMail — очень мощная и простая в использовании библиотека электронной почты, состоящая из нескольких частей. - person jorisw; 20.02.2014
comment
Не делайте этого редко является правильным ответом с кодированием. Почти всегда будут ситуации, когда это потребуется (например, в этом случае, если вы по какой-то причине не можете включить внешние библиотеки). Более правильным ответом было бы: я бы посоветовал избегать этого по причине X, но если вам нужно, вот как... - person lilHar; 24.03.2016

Это может быть артефакт вставки, но попробуйте удалить пустое пространство в конце каждой границы. (Выделите текст, и вы заметите, что у границ есть дополнительный пробел, а у закрывающих границ нет)

person horatio    schedule 31.08.2011

Пожалуйста, проверьте, выглядит ли ваш код следующим образом, потому что следующий код работает нормально для меня.

$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
$headers .= "This is a multi-part message in MIME format.\r\n";
$headers .= "--".$uid."\r\n";
$headers .= "Content-type:text/html; charset=iso-8859-1\r\n";
$headers .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$headers .= $msg."\r\n\r\n";    
$headers .= "--".$uid."\r\n";
$headers .= "Content-Type:application/html; name=\"".$filename."\" \r\n"; // use different content types here
$headers .= "Content-Transfer-Encoding: base64\r\n";
$headers .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
$headers .= $content."\r\n\r\n";
$headers .= "--".$uid."--";
person Sathish Kumar    schedule 31.08.2011