Odosielanie mailu s diakritikou z PHP

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');
No votes yet.
Please wait...
Voting is currently disabled, data maintenance in progress.

Január 10, 2009 at 6:29 pm - Software engineering, Uncategorized (Tags: , , , ).