Ich versuche, eine mehrteilige/alternative MIME-E-Mail über PHP-Skript zu senden ... alles funktioniert gut, aber ich habe ein paar Probleme mit der Codierung! Die akzentuierten Zeichen im E-Mail-Text werden im Mail-Client falsch angezeigt! Wie kann der Körper kodiert werden, um dieses Problem zu lösen? ... Ich habe zu verwenden versucht ..Multipart Mail - Akzentuierungen Probleme
utf8_encode($body)
Ohne gute Ergebnisse!
In einigen rohen Format E-Mail, habe ich festgestellt, dass die Akzentuierungen ersetzt werden von = XX (wo XX sind alphanumerische Zeichen) ... Wie kann ich das tun?
Vielen Dank im Voraus!
Dies ist der Code:
$header = "From: \n";
$header .= "Reply-To: \n";
$header .= "Content-Type: multipart/alternative; boundary=$alt_boundary\n";
$header .= "Mime-Version: 1.0\n";
$header .= "X-Mailer: PHP/".phpversion()."\n";
$body .= "\n".wordwrap($txt_body, 70);
$body .= "\n\n--$alt_boundary\n";
$body .= "Content-Type: multipart/mixed; boundary=$mixed_boundary\n";
$body .= "\n\n\n--$mixed_boundary\n";
$body .= "Content-Type: text/html; charset=utf-8\n";
$body .= "Content-Transfer-Encoding: 7bit\n";
$body .= "\n".wordwrap($html_body, 70);
$body .= "\n\n\n--$mixed_boundary\n";
$body .= "Content-Disposition: attachment filename=\"test file\"\n";
$body .= "Content-Type: application/octet-stream; x-unix-mode=0644; name=\test file\"\n";
$body .= "Content-Transfer-Encoding: 7bit\n";
$body .="\n$file";
$body .= "\n\n--$mixed_boundary--";
$body .= "\n\n--$alt_boundary--";
mail($to, $subject, $body, utf8_encode($header));
EDIT:
Die $txt_body
und $html_body
sind die Inhalte von zwei Dateien:
$txt_body = file_get_contents(...);
$html_body = file_get_contents(...);
In den Dateien, die ich einige Informationen ersetzen, Ich erhalte von PayPal über IPN. Ich habe festgestellt, dass beim Empfang der E-Mail nur die Akzentuierungen, die in den IPN-Informationen auftreten, falsch angezeigt werden (dh die zusätzlichen Informationen, die ich im Inhalt der Dateien ersetze)! Die anderen hervorgehobenen Charaktere werden korrekt angezeigt !!
Wie kann ich das lösen?
GELÖST:
Ich habe das Problem gelöst! Die utf8_encode() - Funktion muss nur auf päpale Info-Variablen angewendet werden, in der Tat versuche ich in utf8 den $ txt_body zu kodieren ... die paypal-Variablen werden 2 mal in utf8 kodiert.
$txt_body = utf8_encode(file_get_contents(...));
$html_body = utf8_encode(file_get_contents(...));
und als in $ txt_body und html_body $ habe ich die Info erhalten durch IPN ersetzt: Mit anderen Worten habe ich das gemacht!
Danke an Eerybody!
erstellt werden Warum sind Verwenden Sie "multipart/alternative", wenn es keine Alternative gibt? Warum benutzt du nicht einfach 'multipart/mixed'? – Gumbo
Ja, Sie haben Recht! – BitDrink
Haben Sie eine * quoted-printable * - oder * base64 * -Übertragungscodierung versucht? – Gumbo