Envíe un correo electrónico eligiendo exactamente cómo aparecerán los encabezados

Envíe un correo electrónico eligiendo exactamente cómo aparecerán los encabezados

He encontrado un comportamiento errático por parte de Yahoo! correo sobre la interpretación de las líneas de asunto cuando el encabezado está codificado en base64 y tiene más de 2 líneas, por ejemplo:

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

Para aislar el error, me gustaría poder enviarme correos electrónicos con los encabezados que quiero, es decir, donde pueda controlar lo que aparece en la versión de texto plano del correo electrónico que se envía.

¿Hay alguna manera de poder controlar esto?

Estoy usando varias herramientas de correo web, pero no hay forma de controlar lo que aparece en los encabezados y busqué en Google una solución personalizada sin éxito.

Respuesta1

En PHP

De esa manera realmente puedes tener mucho control.

Usando PHP PEAR podrías hacer algo como esto:

$_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);

De hecho, incluso puedes print_r($headers);darte una idea de ellos incluso antes de enviarlos. Hay más opciones para jugar con esto, por lo que es posible que desees investigar esto.

en pitón

También es posible hacerlo en Python, utilizando las bibliotecas base.correo electrónicoysmtplibcomo se describeaquí

La idea principal es establecer el encabezado y puede establecer el valor en texto sin formato usando:

msg = MIMEText("text of the mail",'plain')
msg['Subject'] = "=?utf-8?b?Y2Fmw6k=?="

o para generar un formato adecuado a partir de un texto:

msg = MIMEText("text of the mail",'plain')
msg['Subject'] = Header("café","utf8")

información relacionada