Çok parçalı posta - accentuations sorunlar

2 Cevap php

I'm trying to send a multipart/alternative MIME e-mail via PHP script ... all works fine but I've some problems with the encoding! The accentuated characters, in the e-mail body, are displayed wrongly in the mail client! How can encode the body to solve this problem? ... I've tried to use ..

utf8_encode($body)

Iyi sonuçlar olmadan!

Bazı ham biçiminde e-posta, ben accentuations (XX alfanümerik karakter vardır) = XX değiştirilir olduğunu fark ettik ... Bunu nasıl yapabilirim?

Şimdiden teşekkürler!

Bu kodu:

$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:

$txt_body ve $html_body iki dosya içeriği:

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

O ben ben IPN aracılığıyla PayPal aldığınız bazı bilgileri değiştirin dosyaları. Ben e-posta aldığınızda, IPN bilgi oluşur, sadece accentuations yanlış (diğer bir deyişle ben dosyaların içeriğini değiştirmek ek bilgi) görüntülenir olduğunu fark ettik! Diğer vurgulu karakterler doğru gösterilir!

Bunu nasıl çözebilirim?

SOLVED:

Ben sorunu çözdük! utf8_encode () fonksiyonu, sadece papalık bilgileri değişkenlere uygulanan aslında ben $ txt_body utf8 kodlamak için deneyin olmalı ... paypal değişkenler utf8 2 kez kodlanmıştır. Başka bir deyişle bunu yaptık:

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

ve $ txt_body ve $ html_body daha ben IPN yoluyla alınan bilgiye yerini ettik!

Teşekkürler ererybody için!

2 Cevap

Eğer bu özel bölümünün başlığında kullandığım karakter kodlamasını bildirmek gerekir:

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--

utf-8 kodlanmış çok parçalı postaları kolaylıkla SwiftMailer ile oluşturulabilir

$message->addPart($txt_body, 'text/plain', 'utf-8');
$message->addPart($html_body, 'text/html', 'utf-8');
$message->attach(Swift_Attachment::fromPath('/path/to/testfile'));