Problème encodage mail utf-8

Par barpoi78, il y a 2 ans


Bonjour,

Je n'arrive pas à encoder en UTF-8 malgré que je pense ne pas avoir fait d'erreur:

Mon formulaire

<?php require 'vendor/autoload.php'; require 'PHPMailer/src/PHPMailer.php'; require 'PHPMailer/src/SMTP.php'; require 'PHPMailer/src/Exception.php'; use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load(); $mail = new PHPMailer(true); try { $mail->isSMTP(); $mail->Host = $_ENV['MAIL_HOST']; $mail->Port = $_ENV['MAIL_PORT']; $mail->SMTPAuth = true; $mail->Username = $_ENV['MAIL_USERNAME']; $mail->Password = $_ENV['MAIL_PASSWORD']; $mail->SMTPSecure = $_ENV['MAIL_ENCRYPTION']; $to = $_ENV['MAIL_USERNAME']; $mail->addAddress($to); $name = htmlspecialchars($_POST['name']); $email = htmlspecialchars($_POST['email']); $url = htmlspecialchars($_POST['url']); $ville = htmlspecialchars($_POST['ville']); $subject = htmlspecialchars($_POST['subject']); $message = htmlspecialchars($_POST['message']); $message = nl2br($message); $objet = 'Courrier pour la demande de chanteur'; $codehtml = '<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <h3>Courrier pour la demande de chanteur</h3> <p></p> <p>Nom complet: ' . $name . '</p> <p>E-mail: ' . $email . '</p> <p>Ville: ' . $ville . '</p> <p>Sujet: ' . $subject . '</p> <p>Message:<br><br> ' . $message . '</p> <p>URL vid&eacute;o: ' . $url . '</p> </body></html>'; $headers = 'From:' . $siteTitle . "\r\n"; $headers .= 'Bcc:' . $emailAdministrator . "\r\n"; $headers .= 'Reply-To:' . $noreply . "\r\n"; $headers .= 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-Type: text/html; charset=UTF-8' . "\r\n"; $headers .= 'Content-Transfer-Encoding: 8bit'; $mail->isHTML(true); $mail->Subject = $subject; $mail->Body = $codehtml; $mail->AltBody = strip_tags($message); $mail->send(); echo 'L\'email a été envoyé avec succès.'; } catch (Exception $e) { echo 'Une erreur s\'est produite lors de l\'envoi de l\'email : ', $e->getMessage(); }

et ma balise form

<form id="contactForm" name="sentMessage" novalidate="novalidate" method="post" accept-charset="UTF-8">

les mails arrivent mal encodés : à çé etc.

Je vous remercie pour votre aide

3 réponses

Carouge10, il y a 2 ans

Bonjour,
Essayer un ajoutant le charset à phpmailer
$mail->CharSet = 'UTF-8';

A quoi sert $hearders ? si ce n'est pas pour s'en servir

barpoi78, il y a 2 ans

Merci ça fonctionne bien et je n'avais pas fais gaffe pour les $headers à force de tester.

Carouge10, il y a 2 ans

avec plaisir