Envie um email escolhendo exatamente como os cabeçalhos aparecerão

0

Encontrei comportamento errático por parte do Yahoo! mail na interpretação de linhas de assunto quando o cabeçalho é codificado em base64 e faz 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 quero, ou seja, onde eu poderia me controlar o que aparece na versão de texto sem formatação do e-mail enviado.

Existe alguma maneira de eu poder controlar isso?

Estou usando várias ferramentas de webmail, mas não há como controlar o que aparece nos cabeçalhos, e pesquisei por uma solução personalizada sem nenhum benefício.

    
por WNG 02.09.2016 / 00:25

1 resposta

1

No PHP

Dessa forma, você pode ter muito controle.

Usando o PHP PEAR você pode 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é mesmo print_r($headers); dar uma impressão deles antes mesmo de enviar. Há mais opções para mexer com isso, então você pode querer pesquisar isso.

Em python

Também é possível fazer isso em python, usando as bibliotecas base email e smtplib conforme descrito aqui

A idéia 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")
    
por 02.09.2016 / 00:32