Encontrei um comportamento errático por parte do Yahoo! mail na interpretação das linhas de assunto quando o cabeçalho é codificado em base64 e tem mais de 2 linhas, por exemplo:
Subject: =?UTF-8?B?4pyIIEFvIFN1bCBkYSBBbcOpcmljYSDimIUgVGFyaWZhcyBFeGNs?=
=?UTF-8?B?dXNpdmFzIOKYhSBQYXJjZXJpYSBMQVRBTSAmIEFlcm9sw61uZWFzIEFyZ2Vu?=
=?UTF-8?B?dGluYXM=?=
para isolar o bug, gostaria de poder enviar para mim mesmo e-mails com os cabeçalhos que desejo, ou seja, onde eu pudesse controlar o que aparece na versão em texto simples do e-mail que é enviado.
Existe alguma maneira de eu poder controlar isso?
Estou usando diversas ferramentas de webmail, mas não há como controlar o que aparece nos cabeçalhos e procurei uma solução personalizada no Google, sem sucesso.
Responder1
Em PHP
Dessa forma, você pode realmente ter muito controle.
Usando PHP PEAR você poderia fazer algo assim:
$_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);
Na verdade, você pode até print_r($headers);
dar uma impressão deles antes mesmo de enviar. Existem mais opções para mexer nisso, então você pode querer pesquisar isso.
Em python
Também é possível fazer isso em python, usando as bibliotecas basee-mailesmtplibconforme descritoaqui
A ideia principal é definir o cabeçalho, e você pode definir o valor em texto simples usando:
msg = MIMEText("text of the mail",'plain')
msg['Subject'] = "=?utf-8?b?Y2Fmw6k=?="
ou para gerar um formato adequado a partir de um texto:
msg = MIMEText("text of the mail",'plain')
msg['Subject'] = Header("café","utf8")