Bonjour,

Dans un template que j'ai téléchargé, il y a un formulaire de contact.
Lorsqu'on entre un texte avec un accent dans ce formulaire et que je reçois le mail, les caractères accentués ne s'affichent pas correctement.
Par exemple le mot "problème" s'affiche "problème", et ça en est bien un Smiley cligne

Pour info, dans mon HTML, j'ai bien la balise :
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />


Le formulaire en HTML est:
		<!-- Start Contact -->
		<section id="lpv-contact">
			<div class="container">
				<div class="row">
					<div class="col-md-12">
						<div class="lpv-contact-area">

							<!-- Start Contact Content -->
							<div class="lpv-contact-content">
								<div class="row">
									<div class="col-md-12">
										<div class="lpv-contact-bottom">
										<div id="form-messages"></div>
											<form id="ajax-contact" method="post" action="mailer.php" class="lpv-contact-form">
												<div class="form-group">                
													<input type="text" class="form-control" placeholder="Nom" id="name" name="name" required>
												</div>
												<div class="form-group">                
													<input type="email" class="form-control" placeholder="Email" id="email" name="email" required>
												</div>              
												<div class="form-group">
													<textarea class="form-control" placeholder="Message" id="message" name="message" required></textarea>
												</div>
												<button type="submit" class="lpv-send-msg-btn">ENVOYER</button>
								            </form>
										</div>
									</div>	

								</div>
							</div>
							<!-- End Contact Content -->

						</div>
					</div>
				</div>
			</div>
		</section>
		<!-- End Contact -->


et le code en php est :
<?php

    // Only process POST requests.
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        // Get the form fields and remove whitespace.
		$name = strip_tags(trim($_POST["name"]));
		$name = str_replace(array("\r","\n"),array(" "," "),$name);
        $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
        // $cont_subject = trim($_POST["subject"]);
        $message = trim($_POST["message"]);

        // Check that data was sent to the mailer.
        if ( empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
            // Set a 400 (bad request) response code and exit.
            http_response_code(400);
            echo "Oups ! Il y a eu un problème à l'envoi de votre message. Veuillez remplir le formulaire et réessayer.";
            exit;
        }

        // Set the recipient email address.
        // FIXME: Update this to your desired email address.
        $recipient = "mon adresse mail";

        // Set the email subject.
        $subject = "Contact lepoissonvert.fr de $name";

        // Build the email content.
        //$email_content = "Name: $name\n";
        //$email_content .= "Email: $email\n\n";
        // $email_content .= "Subject: $cont_subject\n";
        $email_content .= "\n$message\n";

        // Build the email headers.
        $email_headers = "From: $name <$email>";

        // Send the email.
        if (mail($recipient, $subject, $email_content, $email_headers)) {
            // Set a 200 (okay) response code.
            http_response_code(200);
            echo "Merci ! Votre message a été envoyé.";
        } else {
            // Set a 500 (internal server error) response code.
            http_response_code(500);
            echo "Oups ! Il y a eu un problème et nous n'avons pas pu envoyer votre message.";
        }

    } else {
        // Not a POST request, set a 403 (forbidden) response code.
        http_response_code(403);
        echo "Il y a eu un problème à l'envoi de votre message. Veuillez essayer à nouveau.";
    }

?>


En cherchant sur le net, j'ai trouvé une piste avec l'encodage UTF-8, mais je n'ai aucune idée pour l'intégrer dans la partie PHP si c'est bien ça.

Si quelqu'un avait une idée pour résoudre ce problème, je le remercie par avance Smiley smile
Modifié par miaoumix75 (27 Dec 2021 - 12:41)
Modérateur
Bonjour,

Tu peux tenter de remplacer :
$email_headers = "From: $name <$email>";

par
$email_headers = "From: $name <$email>";
$email_headers.="\r\nContent-Type: text/html; charset=UTF-8";

Sans garantie que ça suffise car en la matière, les pièges sont nombreux.

Amicalement,
Meilleure solution