8797 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai un formulaire mail dans mon site. Il fonctionne bien mais je n'ai pas d'objet dans le titre du mail. Que faut il rajouter pour qu'il y a ait un titre en objet?

Merci pour votre aide.

Mon code php:
<?php

$mailto = "abc@monmail.com";
$sujet = stripslashes($_POST['sujet']);
$mailfrom = $_POST['email'];
$mailfrom = str_replace("\n", "", str_replace("\r", "", $mailfrom));
$messageErreur = "";
$sortieUtilisateur = "";
$retourBr ="<br />";

if($mailfrom == ""){
$messageErreur .= "Veuillez indiquer votre adresse mail.".$retourBr;

}

if(!filter_var($mailfrom, FILTER_VALIDATE_EMAIL)){
$messageErreur .= "Veuillez indiquer une adresse mail valable.".$retourBr;
}


if ($messageErreur == ""){
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=UTF-8\r\n";
$headers .= "From: ".$mailfrom."\r\n";
$headers .="Reply-To: ".$mailfrom."\r\n";
$headers .='X-Mailer: PHP/' . phpversion();
$temptxt= $sujet."\r\n\r\n";
foreach($_POST as $nomVar => $val){
if ( $nomVar!="envoyer" AND $nomVar!="sujet"){
$temptxt .= $nomVar." : \r\n".stripslashes($val)."\r\n";
}
}
if (mail($mailto,$sujet,$temptxt,$headers)){

$temphtm="";
foreach($_POST as $nomVar => $val){
if ($nomVar!="envoyer" AND $nomVar!="sujet"){
$temphtm .= "<strong>".$nomVar."</strong>".$retourBr.stripslashes($val).$retourBr;
}
}
}else{
$messageErreur = 'Un problème est survenu lors de l\'envoi des informations'.$retourBr ;
$messageErreur .= 'Veullez nous contacter par mail' ;
$messageErreur .= '<a href="mailto:'.$mailto.'">'.$mailto.'</a>';
$sortieUtilisateur = $messageErreur;
}

}else{
$sortieUtilisateur = $messageErreur;
$sortieUtilisateur .= '<a href="javascript:window.history.back();">Retour au formulaire</a>'.$retourBr;
}
?>
Modifié par cox_001 (11 Jun 2012 - 09:37)
Salut,

Tu trouvera la réponse a ta question sur la doc PHP de la fonction mail()

Sinon, un conseil d'ami, oublie ça:


<?php
!filter_var($mailfrom, FILTER_VALIDATE_EMAIL);
?>


Cette fonction est vérolé avec les formats de mails actuels, utilise une expression régulière a la place.

Merci d'indenter le code et d'utiliser la balise "code", afin d'épargner nos yeux fragiles Smiley cligne
Modifié par JJK801 (11 Jun 2012 - 09:40)
salut, tu devrais apprendre à lire JJK801.
Cox_001 dit qu'il n'a pas de problèmes avec l'envoi de courrier par la fonction mail() mais que ce courrier n'a rien dans la zone objet !

Je pense que c'est cette instruction qui pose problème :
$sujet = stripslashes($_POST['sujet']);
Dans un premier temps, fait le teste suivant :
$sujet = "ca marche";
pour voir si la zone objet du courrier est bien alimenté.

Ensuite assure toi qu'il y a quelque chose dans $_POST('sujet');
Vérifie que c'est le bon nom de zone : sujet ?
N'auras-tu pas mis autre chose comme nom ?

@+
Modifié par tournikoti (11 Jun 2012 - 11:38)
tournikoti a écrit :
tu devrais apprendre à lire JJK801.


a en juger par ce script:


$temptxt= $sujet."\r\n\r\n";

foreach($_POST as $nomVar => $val)
{
  if ( $nomVar!="envoyer" AND $nomVar!="sujet")
  {
    $temptxt .= $nomVar." : \r\n".stripslashes($val)."\r\n";
  }
}


et celui ci:


$temphtm="";
foreach($_POST as $nomVar => $val)
{
  if ($nomVar!="envoyer" AND $nomVar!="sujet")
  {
    $temphtm .= "<strong>".$nomVar."</strong>".$retourBr.stripslashes($val).$retourBr;
  }
}


il a déjà testé ses variables.

Mais t’inquiète pas, lire un script ça s’apprend...
oui, d'accord sauf que j'ai fait le test ! Et je sais de quoi je parle.

@ cox_001 : j'ai modifié ton code php, d'une part pour mettre les balises d'encadrement <html> <head> <body> afin qu'il puisse fonctionner correctement. J'ai modifier la variable $mailto pour que je puisse recevoir le courrier dans ma boite au lettre. Le reste est inchangé !

J'ai créé ce document html pour vérifier le transfert des données vers le prog php :
<!doctype html>
<html>
<head>
<title></title>
</head>

<body>
<form action="envoi.php" method="post">
<input type="text" name="sujet" value="cet objet n\'existe pas !">
<input type="text" name="email" value="mon.adresse@cher-moi.com">
<input type="submit" value="lancer">
</form>
</body>
</html>
Si les zones sujet et envoi sont correctement remplies, il n'y a pas de problèmes. Pas de messages d'anomalies, et je recois bien le courrier avec les zones correctement renseignées.

Inversement, si par exemple sujet se nomme sujet2, la zone objet reste vierge, un message d'erreur apparait dans le code php mais le message est quand même envoyé. Voici le corps du message.
a écrit :
sujet2 :
cet objet n'existe pas !
email :
mon.adresse@cher-moi.com

Je considère qu'il n'y a pas d'erreurs dans ton code php, mais c'est peut-être le formulaire qui est en cause, d'où mon précédent message. Je peux continuer à faire d'autres tests si tu m'indiques lesquels !

@+
Modifié par tournikoti (11 Jun 2012 - 12:53)
Bonjour tournikoti et JJK801,

Si vous ne voulez pas que j'en prenne un pour taper sur l'autre, merci d'arrêter vos gamineries à longueurs de sujets. Vous avez le droit de ne pas être d'accord, mais vous avez aussi le devoir de ne pas prendre l'autre pour un imbécile.


ps > cox_001, merci de baliser ton code correctement.