ParanoyaBLOG

programmare necesse est,
vivere non est necesse

 

PHPMailer i tytuł wiadomości w UTF-8

 

Wygląda na to, że znana wszystkim i wykorzystywana przez wielu biblioteka phpmailer nie wystrzegła się błędów. Zresztą trudno się dziwić przy tak wielkich projektach. Jak to się mówi: „Nie ma programów bez błędów, są tylko programy źle sprawdzone”.

 

Błąd, o którym piszę związany jest z tytułami wiadomości zakodowanymi w UTF-8. Gdy przekraczają pewną długość biblioteka phpmaile zdaje się gubić i zwraca błąd „Language string failed to load: instantiate”. Na szczęście problem ten daje się rozwiązać i to dość łatwo. Wystarczy zakodować temat wiadomości używając base64:

 

  1. $mail = new PHPMailer();

  2. $mail->CharSet = ‚utf-8’;

  3. $mail->Subject = „=?UTF-8?B?”.base64_encode(str_replace(

  4.    array(„\r”, „\n”, „\r\n”, „\n\r”, „\t”),

  5.    array(”, ”, ”, ”, ”),

  6.    ‚temat wiadomości’

  7. )).”?=”;

  8. $mail->Body = ‚treść wiadomości’;

  9. $mail->Subject = „=?UTF-8?B?”.base64_encode(str_replace(

  10. $mail->AddAddress(’email odbiorcy’, ‚pełna nazwa odbiorcy’);

  11. $mail->Send();

 

Ważne tutaj są linie od 3 do 7 włącznie. Można też zauważyć, że przy okazji z tematu wiadomości zostały wywalone znaki ENTER i TAB.

 

Brak komentarzy to “PHPMailer i tytuł wiadomości w UTF-8”

Komentarze zostały wyłączone.

Zostaw komentarz