Narazil som na drobný problém pri odosielaní mailov z PHP. A síce, že maily s diakritikou chodili označené ako corrupted a nie veľmi čitateľné. Povedal, som si, že na odosielanie skúsim použiť triedy z Pear. Tu som narazil na prvý problém, že include Pear súborov, bol zablokovaný safe módom. Riešenie bolo jednoduché, stačilo pridať správne premenné do konfigurácie Apacha. Finta bola v tom, že adresár, kde sa nachádajú Pear kódy musí byť zároveň v open_basedir aj v safe_mode_include.
php_admin_value open_basedir /home/georgik/www:/usr/local/share/pear php_admin_value safe_mode_include_dir /usr/local/share/pear
Pear síce nevyrišiel problém s odosielaním UTF-8 mailov, ale minimálne použitie tried v PHP prospieva k udržateľnosti kódu. To podstatné boli hlavičky, ktoré bolo nutné do e-mailu pridať.
Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit
No a celý kód vyzerá nasledovne.
/** * Send UTF-8 formated e-mail using PHP Pear Mail classes. * * @param recipient E-mail address where you want to deliver e-mail. * @param subject Subject of e-mail. * @param text UTF-8 content of e-mail. */ function sendEmail($recipient, $subject, $text) { include('Mail.php'); include('Mail/mime.php'); $mail = Mail::factory("mail"); $headers = array( 'From' => "priklad-z-blogu@asinus.cz", 'Subject' => $subject, 'Content-Type' => 'text/plain; charset=UTF-8; format=flowed', 'Content-Transfer-Encoding' => '8bit', ); $mime = new Mail_mime("\n"); $mime->setTXTBody($text); $body = $mime->get( array ('head_charset' => 'UTF-8', 'head_encoding' => 'quoted-printable', 'text_charset' => 'UTF-8', 'html_charset' => 'UTF-8')); $mail->send($recipient, $headers, $body); } sendEmail('objednavky@asinus.org', 'Objednavka', 'Dobrý deň. Rád by som si u Vás objednal hosting a žinčicu. S pozdravom Janko Paľko z Malužinej');