A voir également:
- Redirection après envoi d'un mail par formulaire
- Yahoo mail - Accueil - Mail
- Publipostage mail - Accueil - Word
- Programmer envoi mail gmail - Guide
- Formulaire de réclamation facebook - Guide
- Annuler envoi mail gmail - Guide
5 réponses
tryan44
Messages postés
1288
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
26 octobre 2014
220
13 nov. 2013 à 11:14
13 nov. 2013 à 11:14
Salut,
Simple suggestion :
Problème de header, du texte, html ou code hexadécimal invisible est envoyé avant la redirection ?
Simple suggestion :
Problème de header, du texte, html ou code hexadécimal invisible est envoyé avant la redirection ?
Bonjour,
merci pour ce début de réponse. Voici un le code du fichier php traitant l'envoi du mail. Si vous pouviez avoir la gentillesse d'y jeter un petit coup d'oeil pour voir quelque chose que je n'aurais vu....
merci pour ce début de réponse. Voici un le code du fichier php traitant l'envoi du mail. Si vous pouviez avoir la gentillesse d'y jeter un petit coup d'oeil pour voir quelque chose que je n'aurais vu....
$destinataire = "";
$pageName = "Contact";
$entete = "Prise de contact par formulaire - ";
$email_cc = "";
$email_bcc = "";
$cssform = "/styles/screenstyle.css";
$pageconfirme = "confirmation.html";
/*
si $pageconfirme n'est pas dédiée aux messages on peut y traiter
la variable $_GET['mailOK'] comme ceci :
if(isset($_GET['mailOK']))
echo "Your message have been sent";
*/
/*
fin des modifications
*/
$erreur = false;
$message = false;
$focus = "0";
# l'utilisateur a validé le formulaire
if (!empty($_POST)) {
# vérification des champs requis
if (empty($_POST['nom-prenom'])) {
$erreur = "Merci d'indiquer vos nom et prénom";
$focus = "1";
}
if (empty($_POST['telephone'])) {
$erreur = "Merci de renseigner un numero de telephone";
$focus = "2";
}
if (empty($_POST['adresse'])) {
$erreur = "Merci de renseigner votre adresse";
$focus = "3";
}
if (empty($_POST['profession'])) {
$erreur = "Merci de renseigner votre profession ou statut";
$focus = "4";
}
# email vide
if (empty($_POST['email'])) {
$erreur = "Merci de renseigner votre e-mail";
$focus = "5";
}
# vérification de l'email non vide
elseif (!empty($_POST['email'])) {
if(!preg_match(''^[[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-_.]?[[:alnum:]])*\.([a-z]{2,4})$'',$_POST['email'])) {
$erreur = "Adresse e-mail non valide";
$_POST['email'] = "";
$focus = "6";
}
}
}
# pas d'erreur donc on continue
if(!$erreur) {
# traitement du tableau $_POST qui contient les paires name => value
$message_final = "";
foreach($_POST as $key => $value) {
# la boucle passe les champs vides ou non désirés
# pour passer d'autres champs les séparer par |
if (!strlen($value) || preg_match("/MAX_FILE_SIZE|Objet/i", $key)) continue;
$message_final .= "$key : ".strip_tags($value)."\n";
}
# formatage du message de confirmation affiché (option)
# conversion des sauts de ligne et des caractères spéciaux
$message = nl2br(htmlentities($message_final));
# si $objets est un tableau : Objet = select donc index = $_POST['profession']
if(is_array($objets))
$objet = "$entete ".$objets[$_POST['profession']];
# sinon r_Pseudo = input donc en français dans le texte !
else
$objet = "$entete ".$_POST['profession'];
# si l'email n'est pas renseigné on le remplace par celui
# du destinataire, en ajoutant une alerte au message
$final_mail = $_POST['email'];
if(empty($_POST['email'])) {
$final_mail = $destinataire;
$message_final .= "\nATTENTION : adresse email non connue.\n";
}
# en-têtes
$headers = "From: ".$final_mail;
if(strlen($email_cc))
$headers .= "\nCC: ".$email_cc;
if(strlen($email_bcc))
$headers .= "\nBCC: ".$email_bcc;
# hôte expéditeur
$message_final .= "Hôte : ".gethostbyaddr($_SERVER['REMOTE_ADDR']);
# si pièce jointe on ajoute l'en-tête spécifique avec séparateurs
if(strlen($piecejointe)) {
$boundary = "/-------".md5(uniqid(rand()))."-------/"; // séparateur
$headers .= "\nMIME-Version: 1.0\nContent-Type: multipart/mixed; boundary=\"$boundary\"\n";
$message_final =
"This is a multi-part message in MIME format.\n--$boundary\n".
"Content-Type: text/plain; charset=ISO-8859-1\n".
"Content-Transfer-Encoding: 7bit\n\n".
"$message_final\n\n--$boundary\n".
"Content-Type: $mimetype; name=\"$name\"\n".
"Content-Transfer-Encoding: base64\n".
"Content-Disposition: attachment; filename=\"$name\"\n\n".
"$piecejointe\n--".
$boundary."--\n";
}
# envoi du mail
if (@mail($destinataire, stripslashes($objet), stripslashes($message_final), $headers)) {
@unlink($destination); // suppression de la pièce jointe
# si la page de redirection est renseignée
if(!empty($pageconfirme)) {
@header("Location: ".$pageconfirme."?mailOK=1");
exit;
}
} else {
$pageName = "Failed !";
$erreur = "Failed. Please try again.";
}
} else {
$pageName = "Error";
}
?>
Xavierdu34
Messages postés
216
Date d'inscription
lundi 2 décembre 2013
Statut
Membre
Dernière intervention
10 octobre 2016
21
2 déc. 2013 à 07:59
2 déc. 2013 à 07:59
Si ton site est construit par des includes et est en utf-8, il te faut encoder le fichier en utf8 sans bom.
Pour que le header soit envoyé, il faut que le header soit envoyé avant tout affichage sur la page (en plus clair, tu ne dois avoir aucune sortie html avant l'envoi des headers).
Un simple espace avant <?php fait foirer les headers.
Tiens nous au courant.
Pour que le header soit envoyé, il faut que le header soit envoyé avant tout affichage sur la page (en plus clair, tu ne dois avoir aucune sortie html avant l'envoi des headers).
Un simple espace avant <?php fait foirer les headers.
Tiens nous au courant.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
En effet Xavier, vous avez vu tout juste ; j'ai trouvé mon erreur jeudi dernier (après plusieurs énervements !!!) et allais vous en faire part prochainement, pour que cela n'arrive pas à d'autre...
C'était bien un simple -espace- au début de la première ligne de code, devant la balise <?php> qui posait problème !
Merci en tout cas de votre réponse,
A+
Alex
En effet Xavier, vous avez vu tout juste ; j'ai trouvé mon erreur jeudi dernier (après plusieurs énervements !!!) et allais vous en faire part prochainement, pour que cela n'arrive pas à d'autre...
C'était bien un simple -espace- au début de la première ligne de code, devant la balise <?php> qui posait problème !
Merci en tout cas de votre réponse,
A+
Alex