2013-02-18 2 views
0

Я создал автоматическую систему уведомлений в PHP с помощью функции mail() через постфикс MTA. Тем не менее, пользователи Outlook, на самом деле Exchange Server получают уведомления с одинаковыми символами «=» в конце строк и со сломанным HTML.Postfix отправляет серверу Exchange с символами «=» в конце строк

Exchange Server признал html/text, но у него есть некоторые проблемы с «мягкими разрывами строк» ​​или декодированием с кавычками или с его синтаксическим анализом? Как решить эту проблему?

Вот кодировки и схемы I'am с помощью:

MIME-Version: 1.0 
Content-Type: multipart/alternative; 
boundary="8-10000000000-10000000000:87141" 
Message-Id: <[email protected]> 
Date: Mon, 18 Feb 2013 14:00:31 +0100 (CET) 

--8-10000000000-10000000000:87141 
Content-Type: text/plain; charset=utf-8 
Content-Transfer-Encoding: quoted-printable 

--8-10000000000-10000000000:87141 
Content-Type: text/html; charset=utf-8 
Content-Transfer-Encoding: quoted-printable 

--8-10000000000-10000000000:87141-- 

Это первоначальное тело:

MIME-Version: 1.0 
Content-Type: multipart/alternative; 
boundary="8-10000000000-10000000000:87141" 

--8-10000000000-10000000000:87141 
Content-Type: text/plain; charset=utf-8 
Content-Transfer-Encoding: quoted-printable 

=0A=0A=0A=0A  NOTIFICATION=0A=0A =0A A new post was added in:=0A= 
=09IGCBP11 Europe 123=0A=0A =0A=09=09Test 4 - exchange server header=0A= 
=0A=09=09=0A=09This is test mail. It should be html/text formated via quote= 
d-printable encoding.=0A=0A =0A=09=09Author: Branislav Kurbalija=0A=0A= 
=09Reply online=0A=09=0A=0A=09=0A=09=09To change your account properties or= 
=0A=09=09password go to preferences=0A=09=0A=09=09www.diplomacy.edu=0A=09= 
=0A=0A =0A=09=09=09=09=09=0A=09This=0A=09is an automatically generated e-m= 
ail notification.Please do not=0A=09respond by e-mail as your message will = 
not be read.=09=09=09=09=0A =0A=0A=0A 
--8-10000000000-10000000000:87141 
Content-Type: text/html; charset=utf-8 
Content-Transfer-Encoding: quoted-printable 

=0A<CENTER>=0A=0A<div style=3D"font-family: arial, sans-serif; font-size: 1= 
4px; width:=0A 600px; border: 1px solid #666666; color: #333333;=0A text-= 
align: left; border-radius: 2px;">=0A  <div style=3D"background-color:= 
#008191; color: #ffffff; height: 15px;=0A padding: 20px; border-bottom: 1p= 
x solid #666666; margin-bottom: 5px;">NOTIFICATION</div>=0A=0A <div style= 
=3D"padding: 20px;">=0A A new post was added in:<br>=0A=09<A HREF=3D"ht= 
tp://wsrv05.diplomacy.edu/textus22/?class=3D1#87">IGCBP11 Europe 123</A><BR= 
>=0A=0A <div style=3D"font-weight: bold; margin: 20px 0px 10px 0px;">=0A= 
=09=09Test 4 - exchange server header</div>=0A=0A=09=09<p>=0A=09This is<str= 
ong> test mail</strong>. It should be <span style=3D"background-color:yello= 
w;">html/text</span> formated via quoted-printable encoding.</p>=0A=0A <= 
div style=3D"color: #525252; margin-top: 10px; text-align: right;">=0A=09= 
=09Author: Branislav Kurbalija</div>=0A=0A=09<a href=3D"http://wsrv05.diplo= 
macy.edu/textus22/?class=3D1#87">Reply online</a>=0A=09<hr>=0A=0A=09<div st= 
yle=3D"font-size: 11px; float: left;">=0A=09=09To change your account prope= 
rties or=0A=09=09password go to <A HREF=3D"http://wsrv05.diplomacy.edu/text= 
us22/cantina/profile.php?user=3D941&class=3D1">preferences</A></div>=0A=09<= 
div style=3D"font-size: 11px; float: right;">=0A=09=09<A HREF=3D"http://www= 
.diplomacy.edu/">www.diplomacy.edu</a>=0A=09</div>=0A=0A </div>=0A=09=09= 
=09=09=09=0A=09<div style=3D"font-size: 11px; background-color:#eee; height= 
: 24px;=0A=09 padding: 7px; margin-top: 20px; border-top: 1px solid #66666= 
6; text-align: center;">This=0A=09is an automatically generated e-mail noti= 
fication.<br>Please do not=0A=09respond by e-mail as your message will not = 
be read.</div>=09=09=09=09=0A =0A</div>=0A</CENTER>=0A 
--8-10000000000-10000000000:87141-- 

ответ

1

Существует проблема с quoted_printable_encode() и MS Outlook (см https://github.com/php/php-src/pull/120). Таким образом, вам нужно обновить свой php или реализовать quoted-printable самостоятельно или вместо этого использовать base64.

+0

Уверены ли вы в этом? В случае, если у quoted_printable_encode есть эта ошибка, все пользователи должны получать уведомления с символами «=» и сломанным html. Однако пользователи Not-Outlook (и не Exchange Server) правильно получали уведомления. Значит, эта проблема, вероятно, есть в Exchange Server и как он интерпретирует цитируемые кавычки? – Branislav

+0

Да, вы правы, это не ошибка php. Но php-разработчики любезно изменили поведение функции, чтобы сделать ее выход совместимой с MS :) – lazyhammer

Смежные вопросы