Отправка электронной почты с использованием 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.