Mam problem z polskimi znakami w mailach wysyłanych przez classę PHPMailer. Posiadam najnowszą wersję pod PHP5.
Poniżej przedstawiam kod, który jest odpowiedzialny za wysłanie maila z danych z formularza:
<?php include("class.phpmailer.php"); include("class.smtp.php"); $mail = new PHPMailer(); $mail->SetLanguage("pl"); $mail->IsSMTP(); $mail->SMTPAuth = true; // enable SMTP authentication $mail->SMTPSecure = "ssl"; // sets the prefix to the servier $mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server $mail->Port = 465; // set the SMTP port $mail->Username = "nazwa_usera"; // GMAIL username $mail->Password = "hasło"; // GMAIL password $mail->From = $_POST['email']; $mail->FromName = $_POST['firstname']." ".$_POST['lastname']; $mail->Subject = "Formularz kontaktowy - www.krzeslatolkiny.pl"; $mail->AltBody = $_POST['msg']; $mail->Body = "Imię: ".$_POST['firstname']."<br />Nazwisko: ".$_POST['lastname']."<br />Email: ".$_POST['email']."<br />Telefon: ".$_POST['cellphone']."<br /><br />Wiadomość:<br />".$_POST['msg']; $mail->WordWrap = 0; // set word wrap $mail->MsgHTML($mail->Body); $mail->AddAddress("moj_mail"); $mail->IsHTML(true); // send as HTML if(!$mail->Send()) { $GLOBALS['main'] .= 'Wiadomość nie została wysłana. <br />'; $GLOBALS['main'] .= 'Błąd systemu mailowego: ' . $mail->ErrorInfo; } else { $GLOBALS['main'] .= 'Wiadomość została wysłana.'; } ?>
Wstawienie SetLanguage nic nie dało. Zmiana kodowania plików Classy z ANSI na UTF-8 również nic. Strona jest kodowana w UTF-8. Skrypt ten jest wykonywany przed komendą "SetHeaders".
Maila otrzymuje takiego:
Imię: asd Nazwisko: asdasd Email: Da@sdsad.pl Telefon: Wiadomość: wad awd awd wad awd awd aw daw da w daw wa da w
Temat rozwiązany i do zamknięcia.
Na początku pliku class.phpmailer.php (na początku klasy) są deklarowane zmienne. Jedna z nich odnosi się do kodowania. Zmieniłem na utf-8 i działa jak należy