Frage

Ich versuche, eine multipart / alternative MIME-E-Mail über PHP-Skript zu schicken ... alles funktioniert gut, aber ich habe ein paar Probleme mit der Codierung! Die akzentuierte Zeichen, in dem E-Mail-Text, sind falsch in dem E-Mail-Client angezeigt! Wie kann der Körper kodieren, dieses Problem zu lösen? ... Ich habe versucht, zu verwenden ..

utf8_encode($body)

Ohne gute Ergebnisse!

In einigen RAW-Format E-Mail, ich habe bemerkt, dass die Akzentuierungen aus = XX ersetzt werden (wobei 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(...);

, die Dateien ich einige Informationen ersetzen, die ich von PayPal durch IPN erhalten. Ich habe bemerkt, dass, wenn ich die E-Mail zu erhalten, nur die Akzentuierungen, die zu Unrecht in der IPN-info auftritt (in dem Inhalt der Dateien mit anderen Worten der zusätzliche Informationen, die ich ersetzen) angezeigt! Die anderen akzentuierte Zeichen richtig !! gezeigt

Wie kann ich dieses Problem lösen?

GELÖST:

Ich habe das Problem gelöst! utf8_encode () Funktion darf nur auf päpstliche info Variablen angewendet werden, in der Tat ich versuche, in UTF-8 die $ txt_body zu kodieren ... die paypal Variablen werden 2 mal in UTF-8 codiert. Mit anderen Worten habe ich gemacht, dass:

$txt_body = utf8_encode(file_get_contents(...));
$html_body = utf8_encode(file_get_contents(...));

und als in $ txt_body und html_body $ habe ich ersetzt die Info erhalten durch IPN!

Dank ererybody!

War es hilfreich?

Lösung

Sie müssen die Zeichenkodierung Sie im Header dieses spezifischen Teil verwendet haben deklarieren:

MIME-Version: 1.0
Content-Type: multipart/alternative; boundary=boundary

--boundary
Content-Type: text/plain; charset=utf-8

This part uses UTF-8.
--boundary
Content-Type: text/plain; charset=iso-8859-1

This part uses ISO 8859-1.
--boundary--

Andere Tipps

utf-8-kodierten mehrteiliger Mails können leicht mit Swiftmailer

erstellt werden
$message->addPart($txt_body, 'text/plain', 'utf-8');
$message->addPart($html_body, 'text/html', 'utf-8');
$message->attach(Swift_Attachment::fromPath('/path/to/testfile'));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top