Я обнаружил странное поведение со стороны Yahoo! mail при интерпретации строк темы, когда заголовок закодирован в base64 и занимает более 2 строк, например:
Subject: =?UTF-8?B?4pyIIEFvIFN1bCBkYSBBbcOpcmljYSDimIUgVGFyaWZhcyBFeGNs?=
=?UTF-8?B?dXNpdmFzIOKYhSBQYXJjZXJpYSBMQVRBTSAmIEFlcm9sw61uZWFzIEFyZ2Vu?=
=?UTF-8?B?dGluYXM=?=
Чтобы изолировать ошибку, я хотел бы иметь возможность отправлять себе электронные письма с нужными мне заголовками, т.е. я бы мог сам контролировать то, что отображается в текстовой версии отправляемого электронного письма.
Есть ли у меня возможность как-то это контролировать?
Я использую несколько инструментов веб-почты, но нет возможности контролировать то, что отображается в заголовках, и я искал в Google индивидуальное решение, но безуспешно.
решение1
В PHP
Таким образом, вы действительно сможете многое контролировать.
Используя PHP PEAR вы можете сделать что-то вроде этого:
$_SMTP = array(
"host" => "ssl://smtp.gmail.com",
"username" => "[email protected]",
"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" <[email protected]>',
'Subject' => "Test message",
'To' => '"Example" <[email protected]>'
);
$body = $mime->get();
$headers = $mime->headers($hdrs);
$mail =& Mail::factory('smtp', $_SMTP);
$result = $mail->send('"Example" <[email protected]>', $headers, $body);
print_r($result);
На самом деле, вы даже можете print_r($headers);
дать вам некоторое впечатление о них еще до того, как вы отправите. Есть больше вариантов, чтобы повозиться с этим, так что вы можете захотеть исследовать это.
В питоне
Это также возможно сделать в Python, используя базовые библиотеки.электронная почтаи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")