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)
Without good results!
In some raw format e-mail, I've notice that the accentuations are replaced from =XX (where XX are alphanumeric char) ... How can I do this?
Thanks in advance!
This is the 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:
The $txt_body
and $html_body
are the contents of two files:
$txt_body = file_get_contents(...);
$html_body = file_get_contents(...);
In that files I replace some info that I receive from PayPal through IPN. I've notice that when I receive the e-mail, only the accentuations that occurs in the IPN info are wrongly displayed (in other words the additional info that I replace in the contents of the files)! The other accentuated characters are shown correctly!!
How can I solve this?
SOLVED:
I've solved the problem! utf8_encode() function must be applied only to papal info variables , in fact is I try to encode in utf8 the $txt_body ... the paypal variables are encoded 2 times in utf8. In other word I've made that:
$txt_body = utf8_encode(file_get_contents(...));
$html_body = utf8_encode(file_get_contents(...));
and than in $txt_body and $html_body I've replaced the info received through IPN!
Thanks to ererybody!