Какое Content-Transfer-Encoding следует использовать при отправке PHP mail(), содержащего длинную http-ссылку?

У меня есть скрипт, который отправляет электронные письма, который выглядит примерно так:

$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?

8
задан Community 23 May 2017 в 12:00
поделиться