PHP Mailer l'Encodage UTF-8 problèmes

J'ai travaillé sur un site récemment et a décidé d'inclure un PHPMailer sur elle. Le problème est que je suis hongrois et le site est entièrement en hongrois aussi, de sorte que j'ai dû utiliser de l'UTF-8 jeu de caractères. Le PHP mailer j'ai décidé d'utiliser n'est pas encore capable d'utiliser l'UTF-8 et je ne peux pas comprendre comment le faire écho à des choses dans ma préférée charset. S'il vous plaît aider!

<?php
require_once('phpmailer/class.phpmailer.php');
$mail = new PHPMailer();
if( isset( $_POST['template-contactform-submit'] ) AND $_POST['template-contactform-submit'] == 'submit' ) {
if( $_POST['template-contactform-name'] != '' AND $_POST['template-contactform-email'] != '' AND $_POST['template-contactform-message'] != '' ) {
$name = $_POST['template-contactform-name'];
$email = $_POST['template-contactform-email'];
$phone = $_POST['template-contactform-phone'];
$service = $_POST['template-contactform-service'];
$subject = $_POST['template-contactform-subject'];
$message = $_POST['template-contactform-message'];
$subject = isset($subject) ? $subject : 'New Message From Contact Form';
$botcheck = $_POST['template-contactform-botcheck'];
$toemail = ''; //Your Email Address
$toname = ''; //Your Name
if( $botcheck == '' ) {
$mail->SetFrom( $email , $name );
$mail->AddReplyTo( $email , $name );
$mail->AddAddress( $toemail , $toname );
$mail->Subject = $subject;
$name = isset($name) ? "Név: $name<br>" : '';
$email = isset($email) ? "E-mail: $email<br><br>" : '';
$message = isset($message) ? "Üzenet: $message<br>" : '';
$referrer = $_SERVER['HTTP_REFERER'] ? '<br><br><br>Az üzenetet továbbította: ' . $_SERVER['HTTP_REFERER'] :'';
$body = "$name $email $message $referrer";
$mail->MsgHTML( $body );
$mail->CharSet="UTF-8";
$sendEmail = $mail->Send();
if( $sendEmail == true ):
echo 'Üzenet elküldve!';
else:
echo 'Üzenetküldés sikertelen. Kérlek próbáld újra!' . $mail->ErrorInfo . '';
endif;
} else {
echo 'Bot vagy. Kérlek próbálkozz újra!';
}
} else {
echo 'Kérlek tölts ki minden mezőt és próbáld meg újra!';
}
} else {
echo 'Valami félrecsúszott. Kérlek próbáld meg mégegyszer.';
}
?>
  • PHPMailer n'a aucun problème avec l'encodage UTF-8 - il est plus probable que vous avez un problème d'environnement que de la gâcher. Vous n'avez pas vraiment dire quel est le problème ou comment/où il apparaît. Une chose - msgHTML fait beaucoup de choses qui peuvent être dépend du jeu de caractères, le CharSet de la propriété avant de l'appeler. Assurez-vous également que vous êtes en utilisant les dernières PHPMailer - je vois que vous avez basé votre code sur un vieil exemple.
  • Le problème, c'est lorsque l'expéditeur est appelée et le mail est envoyé (ou une erreur accures) il y a un code jquery sur le site qui imprime le correspondant de l'écho de l'annonce et son plein de "?" des personnages. Pouvez-vous me montrer un exemple de la dernière mailer ou pouvez-vous lien pls?
  • OK, donc le corrompu chars sont sur le site web, pas dans l'e-mail? Si oui, vérifiez que votre site est le choix d'un jeu de caractères dans l'entête Content-type et que votre éditeur est en UTF-8 aussi. PHPMailer vie ici, vous trouverez des exemples dans le dossier exemples.
  • Ils sont dans l'echo-s et l'e-mail aussi à $nom, $email, $message, $référent où l'original Envoyé le mail comme ce "Nom: George" je veux l'envoyer à l'équivalent hongrois "Név: George" et il l'envoie comme ceci: "N�v: George" également les echos afficher comme ceci: "�zenet elk�ldve!" au lieu de "Üzenet elküldve!" ("Message envoyé!" en anglais). Thx pour le lien. Va sourcils à travers.
  • OK, donc il semble que vous avez un problème plus répandu et l'UTF-8, les caractères ne sont pas rendu correctement à l'extérieur de PHPMailer soit.
  • Je ne pense pas que le problème se dresse avec le site ou le javascript. Je l'ai essayé sans le jquery et le problème est toujours debout. Le mail est envoyé et le Message envoyé echo revient (en hongrois ofc), mais tous les caractères spéciaux ne sont pas rendus et il ressemble à ceci. i.imgur.com/sLIvkmN.png
  • Si je visite cette URL, le texte contient des caractères corrompus. Le type de contenu de l'en-tête est correctement spécifiant l'UTF-8. Si je rotatif de l'encodage au niveau du client final, je peux voir que le texte est encodé en ISO-8859-1, pas en UTF-8. Je soupçonne que votre éditeur est responsable à votre fichier source n'est pas dans le bon charset.
  • Viens de réaliser qu'il 30seconds y a que DW a été définie pour l'encodage par défaut.................... FFS! Environ 5 heures de casse-tête pour rien et maintenant il fonctionne parfaitement... Merci pour vos réponses mais au moins j'ai mis à jour vers la dernière phpmailer de ce fait 😀 j'ai une autre question si. Est-il possible de rendre ce code spam preuve? Parce que chaque e-mail que j'ai envoyer finit dans le dossier spam.
  • Heureux que vous, il fixe - c'est probablement la peine de la suppression de cette question que c'est un problème de config, et peu susceptible d'être utile aux autres.
  • Est-il possible de rendre ce code spam preuve? Parce que chaque e-mail que j'ai envoyer finit dans le dossier spam.
  • Pas de manière simple, mais vous devriez regarder dans l'aide de SPF, DKIM, assurez-vous que votre IPs de résoudre correctement, pas de forgeage à partir de l'adresse etc. C'est tout le système de réseau/config choses plutôt que quelque chose à l'intérieur de PHPMailer.
  • Oki! Merci pour votre temps. En fait, j'ai travaillé avec gmail filtres de sorte que son assez de fortune, mais il fonctionne!

InformationsquelleAutor Zsolt Bíró | 2015-07-22