Я обнаружил странное поведение со стороны Yahoo! mail для интерпретации строк темы, когда заголовок закодирован в base64 и составляет более 2 строк, например:

Subject: =?UTF-8?B?4pyIIEFvIFN1bCBkYSBBbcOpcmljYSDimIUgVGFyaWZhcyBFeGNs?=
    =?UTF-8?B?dXNpdmFzIOKYhSBQYXJjZXJpYSBMQVRBTSAmIEFlcm9sw61uZWFzIEFyZ2Vu?=
    =?UTF-8?B?dGluYXM=?=

чтобы изолировать ошибку, я хотел бы иметь возможность отправлять себе электронные письма с нужными мне заголовками, т.е. где я мог бы контролировать себя, что появляется в текстовой версии отправляемого электронного письма.

Есть ли способ для меня, чтобы иметь возможность контролировать это?

Я использую несколько инструментов веб-почты, но нет никакого способа контролировать то, что появляется в заголовках, и я поискал нестандартное решение безрезультатно.

1 ответ1

1

В PHP

Таким образом, вы действительно можете иметь много контроля.

Используя PHP PEAR, вы можете сделать что-то вроде этого:

$_SMTP = array(
    "host"      =>  "ssl://smtp.gmail.com",
    "username"  =>  "example@gmail.com",
    "password"  =>  "password123",
    "port"      =>  "465",
    "auth"      =>  true
);

include_once('PEAR.php');
include_once('Mail.php');
include_once('Mail/mime.php');

$mime = new Mail_mime();
$mime->_build_params['html_charset']='UTF-8';
$mime->_build_params['text_charset']='UTF-8';
$mime->_build_params['head_charset']='UTF-8';
$mime->_build_params['head_encoding']='base64';

$mime->setTXTBody("Plaintext message");
$mime->setHTMLBody("<b>HTML message</b>");

$hdrs = array(
    'From'      => '"Me" <example@gmail.com>',
    'Subject'   => "Test message",
    'To'        => '"Example" <example@gmail.com>'
);

$body = $mime->get();
$headers = $mime->headers($hdrs);

$mail =& Mail::factory('smtp', $_SMTP);

$result = $mail->send('"Example" <example@gmail.com>', $headers, $body);

print_r($result);

На самом деле, вы даже можете print_r($headers); чтобы дать вам некоторое представление о них еще до отправки. Есть больше вариантов, чтобы повозиться с этим, так что вы можете исследовать это.

В питоне

Это также возможно сделать в python, используя базовые библиотеки email и smtplib, как описано здесь

Основная идея состоит в том, чтобы установить заголовок, и вы можете установить значение в виде простого текста, используя:

msg = MIMEText("text of the mail",'plain')
msg['Subject'] = "=?utf-8?b?Y2Fmw6k=?="

или создать правильный формат из текста:

msg = MIMEText("text of the mail",'plain')
msg['Subject'] = Header("café","utf8")

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .