Aller au contenu

Problème avec l'envoi d'un email par formulaire


Chopin

Sujets conseillés

Bonjours,

J'ai un problème plutot complexe, voila ce qui ce passe, j'utilise un script php pour envoyé un mails avec pieces jointe (la piéce jointe est envoyé sur le serveur) le seul problème c'est que la pieces jointe est bien envoyé sur le serveur mais les champs de formulaire remplie avec du texte qui était destiné à ètre envoyé dans une boite mail bien déféni dans le code (absolument rien n'est envoyé dans la boite mail.

Voici le code que j'utilise.

Je comprend vraimet pas car j'ai bien mis dans le $dest=" " mon adresse mail donc les infos du formulaire devrais attérir dans ma boite mail mais pourtant.....

<?php

$dest="chopin_fred_AT_msn.com";
$up_full = "http://tchaikowsky.free.fr/contact-2/upload/";
$up_dir = "./upload/";

$UploadNum = "3";
$online_isp = "0";



function unique_id()
{
$taille = 6;
$new_pass = '';
$lettres = "abcdefghijklmnpqrstuvwxyz123456789";
srand(time());
for ($i=0;$i<$taille;$i++)
{
$new_pass.=substr($lettres,(rand()%(strlen($lettres))),1);
}
define("timer", $new_pass);
}
unique_id();
ini_set("sendmail_from", $dest);

if(isset($_POST["submit"]))
{

$From = preg_replace("/\r/", "", $_POST['From']);
$From = preg_replace("/\n/", "", $_POST['From']);
$Name = preg_replace("/\r/", "", $_POST['Name']);
$Name = preg_replace("/\n/", "", $_POST['Name']);

$Nada = '';
$Msg = $_POST['Msg'];


if(empty($From))
{
$Nada.="Le champ d'email est vide !<br>";
}
if(empty($Msg))
{
$Nada.="Le champ message est vide !<br>";
}
$noway = "$Nada" ;

if(empty($Nada) &&
eregi("^[a-z0-9]+([_.-][a-z0-9]+)*@([a-z0-9]+([.-][a-z0-9]+)*)+\\.[a-z]{2,4}$",$From))
{
$ok = TRUE;
}
elseif(!empty($Nada) &&
eregi("^[a-z0-9]+([_.-][a-z0-9]+)*@([a-z0-9]+([.-][a-z0-9]+)*)+\\.[a-z]{2,4}$",$From))
{
$ok = FALSE;
}
else
{
$ml = "Votre adresse email est invalide !<br>";
$ok = FALSE;
}

$status = '';
$new_name = '';
$get_files = '';
$all_names = '';

for($i=0;$i<count($_FILES["fileup"]["tmp_name"]);$i++)
{
$name=$_FILES["fileup"]["name"][$i];
$temp=$_FILES["fileup"]["tmp_name"][$i];
$size=$_FILES["fileup"]["size"][$i];
$type=$_FILES["fileup"]["type"][$i];
$h = time();
if($size > 0)
{
global $up_dir, $all_names;

$new_name = $h .'-'. constant('timer') . '-' . $name;
$new_name = strtr($new_name, " àäåéèêëïîôöùüûñ()[]'~$&%*@ç!?;,:/^?{}|+", "_aaaeeeeiioouuun____________________E____");
_AT_move_uploaded_file($temp, $up_dir . $new_name);
$all_names.= "$new_name\n";
}
}


if(empty($all_names))
{
$status = "Pas de fichier join.";
}
else
{
$status = "Le fichier a été corectement envoyé.";
$get_files = "\nGet the file(s): $up_full";
}


if($ok == "TRUE")
{
$referer = $_SERVER["HTTP_REFERER"];
$subject = "Feedback";
$body = "Origin: $referer\n";
$body.="\n***** Results *****\n\n";

if(count($_POST))
{
while(list($key, $val) = each($_POST))
{
$body.="$key : $val\n";
}
}

$body.="\n\n";
$body.="Upload: $status\n";
$body.="$all_names\n";
$body.="$get_files\n";
$body.="*************************\n";

$body = stripslashes($body);

if($online_isp == "1")
{
if(!email("feedback",$dest,$sujet,$body))
{
print "An error occured during mail delivery <br>";
}
}
else
{
$header = '';
$header.= 'From: "' . $Name . '" <' . $From . ">\r\n";
$header.= 'Reply-To: "' . $Name . '" <' . $From . ">\r\n";
$header.= "X-Mailer: PHP/" . phpversion();

if(!mail($dest, $subject, $body, $header ))
{
print "An error occured during mail delivery <br>";
}
}

?>

Voila je remerci par avance la personne qui m'indiquera quelle erreur j'ai comise dans le code si cela vient du code.

Voici l'adresse ou j'ai mit le formulaire si cela peut vous aidez à mieux m'aidez. contact musique et interprete

Lien vers le commentaire
Partager sur d’autres sites

Je ne suis pas sur de comprendre ou se citu ton probleme, mais au cas où et suivant le réglage de ton serveur, n'oublie pas de récupérer les variables transmises par des lignes du genre

$Mail = $_POST['Mail']

Lien vers le commentaire
Partager sur d’autres sites

En faite c'est simple je reçoi pas le mail sur ma boite mail, le fichier joint lui en revanche et bien uploadé sur le serveur dans le dosier "upload"

Et je vois pas d'ou peut venir l'erreur dans le code je suis chez free.fr ca vient peut etre du serveur qui ne prend pas toute les fonctions de ce script.

Sinon voici le code complet que j'utilise sur cet page de teste http://tchaikowsky.free.fr/contact-2/contact.php

<?php

$dest="chopin_fred_AT_msn.com";
$up_full = "http://tchaikowsky.free.fr/contact-2/upload/";
$up_dir = "./upload/";

$UploadNum = "3";
$online_isp = "0";



function unique_id()
{
$taille = 6;
$new_pass = '';
$lettres = "abcdefghijklmnpqrstuvwxyz123456789";
srand(time());
for ($i=0;$i<$taille;$i++)
{
$new_pass.=substr($lettres,(rand()%(strlen($lettres))),1);
}
define("timer", $new_pass);
}
unique_id();
ini_set("sendmail_from", $dest);

if(isset($_POST["submit"]))
{

$From = preg_replace("/\r/", "", $_POST['From']);
$From = preg_replace("/\n/", "", $_POST['From']);
$Name = preg_replace("/\r/", "", $_POST['Name']);
$Name = preg_replace("/\n/", "", $_POST['Name']);

$Nada = '';
$Msg = $_POST['Msg'];


if(empty($From))
{
$Nada.="Le champ d'email est vide !<br>";
}
if(empty($Msg))
{
$Nada.="Le champ message est vide !<br>";
}
$noway = "$Nada" ;

if(empty($Nada) &&
eregi("^[a-z0-9]+([_.-][a-z0-9]+)*@([a-z0-9]+([.-][a-z0-9]+)*)+\\.[a-z]{2,4}$",$From))
{
$ok = TRUE;
}
elseif(!empty($Nada) &&
eregi("^[a-z0-9]+([_.-][a-z0-9]+)*@([a-z0-9]+([.-][a-z0-9]+)*)+\\.[a-z]{2,4}$",$From))
{
$ok = FALSE;
}
else
{
$ml = "Votre adresse email est invalide !<br>";
$ok = FALSE;
}

$status = '';
$new_name = '';
$get_files = '';
$all_names = '';

for($i=0;$i<count($_FILES["fileup"]["tmp_name"]);$i++)
{
$name=$_FILES["fileup"]["name"][$i];
$temp=$_FILES["fileup"]["tmp_name"][$i];
$size=$_FILES["fileup"]["size"][$i];
$type=$_FILES["fileup"]["type"][$i];
$h = time();
if($size > 0)
{
global $up_dir, $all_names;

$new_name = $h .'-'. constant('timer') . '-' . $name;
$new_name = strtr($new_name, " àäåéèêëïîôöùüûñ()[]'~$&%*@ç!?;,:/^?{}|+", "_aaaeeeeiioouuun____________________E____");
_AT_move_uploaded_file($temp, $up_dir . $new_name);
$all_names.= "$new_name\n";
}
}


if(empty($all_names))
{
$status = "Pas de fichier join.";
}
else
{
$status = "Le fichier a été corectement envoyé.";
$get_files = "\nGet the file(s): $up_full";
}


if($ok == "TRUE")
{
$referer = $_SERVER["HTTP_REFERER"];
$subject = "Feedback";
$body = "Origin: $referer\n";
$body.="\n***** Results *****\n\n";

if(count($_POST))
{
while(list($key, $val) = each($_POST))
{
$body.="$key : $val\n";
}
}

$body.="\n\n";
$body.="Upload: $status\n";
$body.="$all_names\n";
$body.="$get_files\n";
$body.="*************************\n";

$body = stripslashes($body);

if($online_isp == "1")
{
if(!email("feedback",$dest,$sujet,$body))
{
print "An error occured during mail delivery <br>";
}
}
else
{
$header = '';
$header.= 'From: "' . $Name . '" <' . $From . ">\r\n";
$header.= 'Reply-To: "' . $Name . '" <' . $From . ">\r\n";
$header.= "X-Mailer: PHP/" . phpversion();

if(!mail($dest, $subject, $body, $header ))
{
print "An error occured during mail delivery <br>";
}
}

?>
<html><head><title>Succés !</title></head><body bgcolor="white" text="black" link="#003399" vlink="#003399" alink="#003399">
<center><table width="450" border="0" cellspacing="0" cellpadding="0"><tr>
<td width="100%" bgcolor="#000000">
<table width="550" border="0" cellspacing="1" cellpadding="2"><tr>
<td colspan="2" bgcolor="#ffffff"><div align="center"><br>
Merci !<br><br>Le message a été corectement envoyé au webmaster.<br><br>
<?php echo $status; ?>
<br><p> </p><p> </p>
<p><a href="contact.php">Retour au formulaire</a></p><br></div>
<font size="-2"><a href="http://www.skyminds.net/source/" target="_blank">Mail-it Now!</a></font>
</tr></table>
</td></tr></table></center></body>
<!--This script sources from SkyMinds.Net (http://www.skyminds.net/) -->
</html>
<?php
}

else
{

?>
<html><head><title>Erreur !</title></head><body bgcolor="white">
<center><table width="450" border="0" cellspacing="0" cellpadding="0"><tr>
<td width="100%" bgcolor="#000000">
<table width="550" border="0" cellspacing="1" cellpadding="2"><tr>
<td colspan="2" bgcolor="#ffffff"><div align="center"><br><b>
<?php
echo $noway;
echo $ml;
?>
</b><p><br><br>Le message a pas été corectement envoyé, cliquez sur Retour pour recommencer.<br> <a href="../Zcontact/Zcontact.php">Contacter le webmaster</a> Si cela se reproduit.</p>
<p> </p><p> </p>
<p><a href='java script:history.go(-1)'>Retour</a></p><br></div>
<font size="-2"><a href="http://www.skyminds.net/source/" target="_blank">Mail-it Now!</a></font>
</tr></table>
</td></tr></table></center></body>
<!--This script sources from SkyMinds.Net (http://www.skyminds.net/) -->
</html>
<?php

}
}
else
{
$num = 0;
$upload_box = '';
while($num < $UploadNum)
{
$num++;
$upload_box.= "<tr><td><font size='-1' face='verdana'>   File $num:</font></td><td><input name='fileup[]' type='file'></td>";
}
?>
<html>
<head>
<title>Contact form</title>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#003399" vlink="#003399" alink="#003399"
topmargin=" 0" leftmargin="0" marginwidth="0" marginheight="0" style="border: 1">
<!--

-->
<table border="0" width="60%" align="center"><tr><td valign="top">
<table border="1" width="70%" bordercolor="#000000" bordercolordark="#FFFFFF" cols="1" align="center"><tr><td>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<table border="0" bordercolor="#000000" height="100" align="center"><tr>
<td height="5" width="218"><font size="2" face="Arial, Helvetica, sans-serif"><b>Email : </b></font></td><td height="5" width="249"><input type="text" size="30" maxlength="255" name="From" style="background-color: #CCCCCC;font: verdana; color: #000000; border: 0px;" value=""></td></tr><tr><td height="5" width="218"><font size="2" face="Arial, Helvetica, sans-serif">Name : </font></td><td height="5" width="249"><input type="text" size="30" name="Name" style="background-color: #CCCCCC;font: verdana; color: #000000; border: 0px;" value=""></td></tr></table>
<p align="center"><b><font size="2" face="Arial, Helvetica, sans-serif">Message : </font></b><br><textarea name="Msg" cols="45" rows="7"></textarea><br></p>
<table width="95%" border="0" align="center"><tr align="center"><td> </td>
<?php echo $upload_box; ?></tr></table>
<p align="center"><br>
<input type="reset" name="reset" value=" Clear ">
<input type="submit" name="submit" value=" Send " style="background-color:#CCCCCC">
</p>
</form>
<font size="-2"><a href="http://www.skyminds.net/source/" target="_blank">Mail-it Now!</a></font>
</td></tr></table>
</td></tr></table>
</body>
<!--This script sources from SkyMinds.Net (http://www.skyminds.net/) -->
</html>
<?php } ?>

Merci encore a ceux qui m'aide.

Lien vers le commentaire
Partager sur d’autres sites

Déja, dans

$From = preg_replace("/\r/", "", $_POST['From']);
$From = preg_replace("/\n/", "", $_POST['From']);

la 1° ligne ne sert à rien si la 2° utilise $_POST['From'] et non $From

Je ne trouve pas "Le message a été corectement envoyé au webmaster." dans le code.

Sinon, il faudrait vérifier si déjà chez ton hébergeur la fonction mail() fonctionne.

Autrement, ajouter au début du script un error_reporting(E_ALL); qui affichera toutes les erreurs d'exécution.

Lien vers le commentaire
Partager sur d’autres sites

J'ai enlevé la 2e ligne mais ca ne fonctionne toujours pas :( , pour la fonction mail () je m'en sert pour un autre script et il fonctionne.

en revanche j'ai reçu des messages test envoyé par vous j'imagine, donc c'est que ca fonctionne chez vous mais pas dans mon hebergeur à moin que vous avez modifié le code pour que cela fonctionne.

Si c'est le cas pourriez vous me dire ce que vous avez modifier :) a part la ligne

$From = preg_replace("/\n/", "", $_POST['From']);

que j'ai deja essayé.

Merci encore de votre aide.

Lien vers le commentaire
Partager sur d’autres sites

Non, j'ai juste rempli le formulaire.

A vérifier alors, peut-être une incompatibilité avec l'envoi de fichier. Genre s'il y a des fichiers, fin de la procédure, peut-être ?

Lien vers le commentaire
Partager sur d’autres sites

Nan sans fichier ca fonctionne toujours pas je pense que doit plutot venir de l'hebergement alors.

Bien merci encore pour l'aide que vous m'avez apporté même si mon probleme n'est pas résolu ce n'était pas inutile j'ai pu comprendre plusieurs choses et ca ma donné une autre idée.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Free a désactivé la fonction mail en php pour des raisons de surcharge ou de sécurité...

Ils ont prévu quand même un formulaire en cgi pour leurs clients qui est sur leur site...

Tu ne pourras donc pas utiliser de fonctions mail...ni changer le CHMOD (autorisations)

C'est étonnant qu'ils n'aient pas désactivé l'upload des fichiers... :fou:

A plus

Olivier

Lien vers le commentaire
Partager sur d’autres sites

Elle n'est pas désactivée la fonction mail() chez free, car :

1) je l'utilise sur un de mes sites

2) les tests que j'ai effectués hier sur son domaine lui ont bien envoyé le message :rolleyes:

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...