Re: [PHP] Mail subject encoding breaks
On 5/11/09 11:58 AM, Thodoris t...@kinetix.gr wrote: On 11 May 2009 at 18:25, Thodoris wrote: Hi gang, I am using phpmailer to send some mail notifications in an intranet I've made. This is a sample code: $e-Subject = This is δφκξγκδφη garbidge κηδφκξγσ; Hi, I have had success with this in the past: $subject = This is δφκξγκδφη garbidge κηδφκξγσ; $e-Subject = mb_encode_mimeheader($subject, UTF-8, Q) ; Regards Ian Thanks Ian this works in most cases but there are times that still breaks the subject. I have experimented with: mb_encode_mimeheader($subject, UTF-8, B) as well but nothing seems to be working without problems. is it possible that in the problem cases the subject string isn't valid utf-8? you can check with mb_check_encoding($subject) you can sanitize bad utf-8 with iconv(UTF-8,UTF-8//IGNORE,$subject) though you probably won't get the string you want with that. when you don't have other options, this will at least clean up bad encoding. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] Mail subject encoding breaks
Hi gang, I am using phpmailer to send some mail notifications in an intranet I've made. This is a sample code: ?php // Include PHP Mailer require 'class/class.phpmailer.php'; // Instantiate the mailer $e = new phpmailer(); $e-From = aco...@host.gr; $e-FromName = Test; $e-Mailer = mail; $e-Subject = This is δφκξγκδφη garbidge κηδφκξγσ; $e-CharSet = UTF-8; $e-Body = H εργασία id: 122 έκλεισε με σχόλια.; $e-AddReplyTo(supp...@kinetix.gr); $e-AddAddress(t...@kinetix.gr); // $e-to = array(t...@kinetix.gr); if ($e-Send()) { print Mail has been sent successfully.; } else { print Failed to send mail.br.$e-ErrorInfo; } ? Where mailer class is: ?php require 'class.phpmailer.php'; class mailer extends phpmailer { var $From = aco...@host.gr; var $FromName = Test; var $Mailer = mail; var $WordWrap = 200; var $CharSet = UTF-8; var $Encoding = quoted-printable; // var $Encoding = base64; } ? This script seems to work ok in a freebsd development server I have but a linux production machine breaks the subject's encoding for some unexpected reason. The subject has a mix of English and Greek characters that FreeBSD seems to handle like a charm. Both machines have the same php version (5.2.9) and the scripts encoding is UTF-8. Iconv and mbstring are configured the same way in php.ini (although I am not aware whether phpmailer uses iconv or mbstring). Has anyone had a similar experience? Is it possible that sendmail (which is the underlying tool) breaks the mail encoding? Please any help would be appreciated because this is really driving me crazy. -- Thodoris -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Mail subject encoding breaks
On 11 May 2009 at 18:25, Thodoris wrote: Hi gang, I am using phpmailer to send some mail notifications in an intranet I've made. This is a sample code: $e-Subject = This is δφκξγκδφη garbidge κηδφκξγσ; Hi, I have had success with this in the past: $subject= This is δφκξγκδφη garbidge κηδφκξγσ; $e-Subject = mb_encode_mimeheader($subject, UTF-8, Q) ; Regards Ian -- -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Mail subject encoding breaks
On 11 May 2009 at 18:25, Thodoris wrote: Hi gang, I am using phpmailer to send some mail notifications in an intranet I've made. This is a sample code: $e-Subject = This is δφκξγκδφη garbidge κηδφκξγσ; Hi, I have had success with this in the past: $subject= This is δφκξγκδφη garbidge κηδφκξγσ; $e-Subject = mb_encode_mimeheader($subject, UTF-8, Q) ; Regards Ian Thanks Ian this works in most cases but there are times that still breaks the subject. I have experimented with: mb_encode_mimeheader($subject, UTF-8, B) as well but nothing seems to be working without problems. I think that this solved my problems since I noticed that it works fine until this moment. function mail_utf8($to, $subject = '(No subject)', $message = '', $header = '') { $header_ = 'MIME-Version: 1.0' . \r\n . 'Content-type: text/plain; charset=UTF-8' . \r\n; mail($to, =?UTF-8?B?.base64_encode($subject).'?=', $message, $header_ . $header); } -- Thodoris