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

247
WNG

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

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

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

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

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

0

1 ответ на вопрос

1
Asu

В 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") 
Ну, я не знаю PHP, но это хороший повод, чтобы узнать что-то новое сегодня ... Держи мою грушу, я иду! Я дам вам знать, если мне удастся :) WNG 7 лет назад 0
Конечно, дайте мне знать, как это происходит. Если вы не очень хорошо знакомы с этим, вы, вероятно, сможете воспользоваться пакетом XAMP (Windows) или LAMP (Linux), который включает в себя веб-сервер, PHP (скорее всего, с уже установленной PEAR), MySQL и все, что вам нужно, чтобы начать делать сайты или инструменты исследования обсуждались выше:) Удачи! Asu 7 лет назад 1
Хорошо, я испугался PHP, и я реализовал ваше решение на python с библиотекой электронной почты. Это сработало отлично. Что мне теперь делать: добавить фрагмент моего Python-решения к вашему, а затем принять его? WNG 7 лет назад 1
Да, я думаю, это звучит хорошо :) Asu 7 лет назад 0

Похожие вопросы