У меня есть скрипт, который отправляет электронные письма, которые выглядят примерно так:
$headers = "From: test@example.com\r\n";
$headers .= "Reply-To: test@example.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=utf-8\r\n";
$headers .= "Content-Transfer-Encoding: 8bit";
$orgsubject = "A subject with some swedish characters like å, ä and ö";
$newsubject='=?UTF-8?B?'.base64_encode($orgsubject).'?=';
$body = 'A lot of text.
Some more text.
A long URL:
http://example.com/subpage/?id=1234&hash=23jh4lk2j3h4lkjh674598xzxlk2j34h&anotherhash=h2k3j4h23kh42kj34h2lk3';
Он тщательно протестирован, но некоторые пользователи, я думаю, пользователи Outlook, получают URL, похожий на этот: http://example.com/subpage/?id=3D1234&hash=3D3D23jh4lk2j3h4lkjh674598xzxlk2j34h&anotherhash=3Dh2k3j4h23kh42kj34h2lk3 После знака равенства следует «3D», что делает URL-адрес бесполезным в моем случае.Я думаю, это как-то связано с Content-Transfer-Encoding или, возможно, Content-type. Нужно ли мне кодировать тело сообщения в base64 или что-то в этом роде?
Обновление
Только что нашел этосообщение на форуме: https://stackoverflow.com/a/7289434/513321 Итак, я удалил Content-Transfer-Encoding, и он, кажется, работает нормально, но с другой стороны, я никогда не смог воспроизвести ошибку, когда URL содержал текст «3D», поэтому я не могубудьте уверены, что это сработает.Кто-нибудь знает, решит ли мою проблему удаление Content-Transfer-Encoding?