Отправка электронной почты с использованием perl mail/sender с html частью тела

Я новичок в Perl и пытаюсь отправить электронное письмо, используя модуль Mail::Sender с HTML в основной части. я использую debug => 'x.log' проанализировать процесс отправки почты.

Похоже, что Perl странно ставит 3D после каждого знака "=" и 20 для каждого пробела в моем HTML-коде (выглядит как URL-коды для HTML). И после этого электронное письмо не получено клиентом. Что может быть проблемой здесь? (например border="5" становится border=3D"5")

я использую $sender->SendEnc($BODY); отправить сообщение и $sender->Open({to => "$userAtFaultEmail", subject => "$email_subject", ctype => "text/html", encoding => "quoted-printable"'}); открыть почтовое соединение.

1 ответ

Решение

Это совершенно естественно. В цитируемом-печатаемом кодировке знак равенства = это экранирующий символ, поэтому он должен быть экранирован сам. После escape-символа дается шестнадцатеричный номер символа. Почтовые клиенты будут правильно его декодировать. Если вам это не нравится, вы можете изменить кодировку, например, на UTF-8. Однако это не так часто и может вызвать новые проблемы с устаревшими клиентами.

Вот статья в Википедии о цитируемой печати. Причиной такого кодирования является кодирование 8-битных символов, в то время как электронная почта традиционно передает только 7-битный ASCII.

Другие вопросы по тегам