Staram się używać PHPMailer do wysyłania rejestracji, aktywacji. etc mail do użytkowników:
require("class.phpmailer.php");
$mail -> charSet = "UTF-8";
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "smtp.mydomain.org";
$mail->From = "[email protected]";
$mail->SMTPAuth = true;
$mail->Username ="username";
$mail->Password="passw";
//$mail->FromName = $header;
$mail->FromName = mb_convert_encoding($header, "UTF-8", "auto");
$mail->AddAddress($emladd);
$mail->AddAddress("[email protected]");
$mail->AddBCC('[email protected]', 'firstadd');
$mail->Subject = $sub;
$mail->Body = $message;
$mail->WordWrap = 50;
if(!$mail->Send()) {
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
}
$message
Zawiera znaki alfabetu łacińskiego. Niestety cała poczta internetowa (gmail, webmail.mydomain.org, emailaddress.domain.xx) używa innego kodowania.
Jak mogę wymusić użycie kodowania UTF-8, aby wyświetlać dokładnie taką samą pocztę na wszystkich skrzynkach pocztowych?
Próbowałem przekonwertować szerokość nagłówka wiadomości mb_convert_encoding()
, ale bez powodzenia.
Odpowiedzi:
Jeśli masz 100% pewności, że wiadomość $ zawiera ISO-8859-1, możesz użyć utf8_encode, jak mówi David. W przeciwnym razie użyj mb_detect_encoding i mb_convert_encoding na $ wiadomości.
Zwróć też uwagę na to
Należy zastąpić:
I umieszczone po wystąpieniu klasy (po
new
). We właściwościach rozróżniana jest wielkość liter! Zobacz dokument PHPMailer na liście i dokładną pisownię.Również domyślne kodowanie PHPMailer
8bit
może powodować problemy z danymi UTF-8. Aby to naprawić, możesz:Zauważ,
'quoted-printable'
że prawdopodobnie zadziałałoby również w tych przypadkach (a może nawet'binary'
). Aby uzyskać więcej informacji można przeczytać RFC1341 - Content-Transfer-Encoding pole nagłówka .źródło
linia
$mail -> CharSet = "UTF-8";
musi być za$mail = new PHPMailer();
i bez spacji!Spróbuj tego
źródło
Przepraszam za spóźnienie na imprezie. W zależności od konfiguracji serwera może być konieczne podanie znaku wyłącznie małymi literami utf-8, w przeciwnym razie zostanie on zignorowany. Spróbuj tego, jeśli skończysz tutaj, szukając rozwiązań i żadna z powyższych odpowiedzi nie pomoże:
należy zastąpić:
źródło
Pracuję w ten sposób
http://php.net/manual/en/function.utf8-decode.php
źródło
źródło
Byłem coraz & oacute; w $ mail-> Temat / w PHPMailer.
Dla mnie kompletne rozwiązanie to:
Mam nadzieję, że to pomoże.
źródło
Gdy żadna z powyższych czynności nie działa, a wiadomości nadal wyglądają następująco
ª הודפסה ×•× ×©×œ
:źródło
@ $mail -> charSet = "UTF-8";
--- ta linia powinna być pod
$mail = new PHPMailer(); line.
pff ..
Tak, to jest poprawne. Musisz go umieścić po utworzeniu wystąpienia obiektu.
źródło
Najprostszym sposobem i pomocą będzie ustawienie CharSet na UTF-8
źródło
Aby uniknąć problemów z kodowaniem znaków podczas wysyłania wiadomości e-mail za pomocą klasy PHPMailer, możemy skonfigurować go tak, aby wysyłał go z kodowaniem znaków UTF-8 za pomocą parametru „CharSet”, jak widać w następującym kodzie php:
źródło
$ mail -> charSet = "UTF-8"; --- ta linia powinna mieć wartość $ mail = new PHPMailer (); linia.
pff ..
źródło