ヘッダーが base64 でエンコードされ、2 行を超える場合、Yahoo! メールの件名の解釈で不安定な動作が発生することがわかりました。例:
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の場合
基本ライブラリを使用してPythonでこれを行うことも可能です。Eメールそして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")