Senden Sie eine E-Mail und wählen Sie genau aus, wie die Kopfzeilen angezeigt werden sollen.

Senden Sie eine E-Mail und wählen Sie genau aus, wie die Kopfzeilen angezeigt werden sollen.

Ich habe festgestellt, dass Yahoo! Mail bei der Interpretation von Betreffzeilen ein unregelmäßiges Verhalten zeigt, wenn der Header in Base64 codiert ist und mehr als zwei Zeilen umfasst, zum Beispiel:

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

Um den Fehler zu isolieren, möchte ich in der Lage sein, mir selbst E-Mails mit den gewünschten Headern zu senden, d. h. ich möchte selbst steuern können, was in der Nur-Text-Version der gesendeten E-Mail angezeigt wird.

Gibt es für mich eine Möglichkeit, dies zu kontrollieren?

Ich verwende mehrere Webmail-Tools, kann aber nicht steuern, was in den Kopfzeilen angezeigt wird. Ich habe bei Google vergeblich nach einer benutzerdefinierten Lösung gesucht.

Antwort1

In PHP

Auf diese Weise haben Sie wirklich viel Kontrolle.

Mit PHP PEAR könnten Sie etwa Folgendes tun:

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

Tatsächlich können Sie print_r($headers);sich sogar schon vor dem Senden einen Eindruck davon verschaffen. Es gibt noch mehr Möglichkeiten, damit herumzubasteln, also sollten Sie sich darüber informieren.

In Python

Dies ist auch in Python möglich, unter Verwendung der BasisbibliothekenEmailUndsmtplibwie beschriebenHier

Die Hauptidee besteht darin, den Header festzulegen. Sie können den Wert im Klartext festlegen mit:

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

oder um aus einem Text ein passendes Format zu erzeugen:

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

verwandte Informationen