Auteur Sujet: Script php d'envoi de mail ne fonctionne plus.  (Lu 3638 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne luxylux

  • Débutant
  • *
  • Messages: 2
Script php d'envoi de mail ne fonctionne plus.
« le: 27 Juillet 2012 à 12:54:18 »
Bonjour tout le monde,

Je ne suis pas nouveau sur phpnet, mais nouveau sur le forum et j'éprouve une difficulté avec l'utilisation d'un script.

Ayant besoin de permettre au visiteur l'envoi d'un fichier joint j'ai pioché sur le web et trouvé ce script qui fonctionnait à merveille la semaine passé mais depuis hier lors d'un test d'envoi, aussi bien sans fichier que avec fichier, je me rend compte que 100 pour cent des mails n'arrivent pas, malgré que le script rempli la condition réussi. Le serveur pourrait rejeter cette semaine un script ayant fonctionné la semaine dernière ?

J'ai vérifié le php.ini et il semble ok en ce qui concerne le [mail function]


url Source du script utilité: http://www.shotdev.com/php/php-mail/php-send-email-upload-form-attachment-file/

Fichier 1 =>  formulaire d'envoi
    <html> 
    <head> 
    <title>ShotDev.Com Tutorial</title> 
    </head> 
    <body> 
    <form action="php_sendmail_upload2.php" method="post" name="form1" enctype="multipart/form-data"> 
    <table width="343" border="1"> 
    <tr> 
    <td>To</td> 
    <td><input name="txtTo" type="text" id="txtTo"></td> 
    </tr> 
    <tr> 
    <td>Subject</td> 
    <td><input name="txtSubject" type="text" id="txtSubject"></td> 
    </tr> 
    <tr> 
    <td>Description</td> 
    <td><textarea name="txtDescription" cols="30" rows="4" id="txtDescription"></textarea></td> 
    </tr> 
    <tr> 
    <td>Form Name</td> 
    <td><input name="txtFormName" type="text"></td> 
    </tr> 
    <tr> 
    <tr> 
    <td>Form Email</td> 
    <td><input name="txtFormEmail" type="text"></td> 
    </tr> 
    <tr> 
    <td>Attachment</td> 
    <td><input name="fileAttach" type="file"></td> 
    </tr> 
    <tr> 
    <td>&nbsp;</td> 
    <td><input type="submit" name="Submit" value="Send"></td> 
    </tr> 
    </table> 
    </form> 
    </body> 
    </html> 


Fichier 2 => script php d'envoi avec possibilité d'attacher un fichier (testé la semaine dernière chez phpnet avec un fichier de plus de 10 mb et il fonctionnait)

    <html> 
    <head> 
    <title>ShotDev.Com Tutorial</title> 
    </head> 
    <body> 
    <? 
    $strTo = $_POST["txtTo"]; 
    $strSubject = $_POST["txtSubject"]; 
    $strMessage = nl2br($_POST["txtDescription"]); 
     
    //*** Uniqid Session ***// 
    $strSid = md5(uniqid(time())); 
     
    $strHeader = ""; 
    $strHeader .= "From: ".$_POST["txtFormName"]."<".$_POST["txtFormEmail"].">\nReply-To: ".$_POST["txtFormEmail"].""; 
     
    $strHeader .= "MIME-Version: 1.0\n"; 
    $strHeader .= "Content-Type: multipart/mixed; boundary=\"".$strSid."\"\n\n"; 
    $strHeader .= "This is a multi-part message in MIME format.\n"; 
     
    $strHeader .= "--".$strSid."\n"; 
    $strHeader .= "Content-type: text/html; charset=utf-8\n"; 
    $strHeader .= "Content-Transfer-Encoding: 7bit\n\n"; 
    $strHeader .= $strMessage."\n\n"; 
     
    //*** Attachment ***// 
    if($_FILES["fileAttach"]["name"] != "") 
    { 
    $strFilesName = $_FILES["fileAttach"]["name"]; 
    $strContent = chunk_split(base64_encode(file_get_contents($_FILES["fileAttach"]["tmp_name"]))); 
    $strHeader .= "--".$strSid."\n"; 
    $strHeader .= "Content-Type: application/octet-stream; name=\"".$strFilesName."\"\n"; 
    $strHeader .= "Content-Transfer-Encoding: base64\n"; 
    $strHeader .= "Content-Disposition: attachment; filename=\"".$strFilesName."\"\n\n"; 
    $strHeader .= $strContent."\n\n"; 
    } 
     
    $flgSend = @mail($strTo,$strSubject,null,$strHeader);  // @ = No Show Error // 
     
    if($flgSend) 
    { 
    echo "Mail send completed."; 
    } 
    else 
    { 
    echo "Cannot send mail."; 
    } 
    ?> 
    </body> 
    </html> 


Légèrement fatigué de chercher l'erreur,  ?? rejeté par le serveur ??, prit pour un spam..... j'ai tenté d'appliquer ce que cette url donne comme pistes pour éviter que le script ne soit rejeté, mais sans succès.  http://www.html-form-guide.com/email-form/php-script-not-sending-email.html

En définitive :
le script fonctionne toujours mais n'arrive jamais à destination.
à l’exception des formulaires d'envoi de cms comme WP, drupal, joomla. et ce simple script test qui lui fonctionne.

<?php
/*
From http://www.html-form-guide.com 
This is the simplest emailer one can have in PHP.
If this does not work, then the PHP email configuration is bad!
*/
$msg="";
if(isset(
$_POST['submit']))
{
    
/* ****Important!****
    replace name@your-web-site.com below 
    with an email address that belongs to 
    the website where the script is uploaded.
    For example, if you are uploading this script to
    www.my-web-site.com, then an email like
    form@my-web-site.com is good.
    */

$from_add "xxx@domain.com"

$to_add "xxxos@domain.com"//<-- put your yahoo/gmail email address here

$subject "Test Subject";
$message "Test Message";

$headers "From: $from_add \r\n";
$headers .= "Reply-To: $from_add \r\n";
$headers .= "Return-Path: $from_add\r\n";
$headers .= "X-Mailer: PHP \r\n";


if(mail($to_add,$subject,$message,$headers)) 
{
$msg "Mail sent OK";

else 
{
 
   $msg "Error sending email!";
}
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Test form to email</title>
</head>

<body>
<?php echo $msg ?>
<p>
<form action='<?php echo htmlentities($_SERVER['PHP_SELF']); ?>' method='post'>
<input type='submit' name='submit' value='Submit'>
</form>
</p>


</body>
</html>

Je vous remercie de m'avoir lu et de l'aide qu'il sera peut être possible de m'apporter. :)

luxy

« Modifié: 27 Juillet 2012 à 12:57:21 par luxylux »

Hors ligne Sellig33

  • Connaisseur
  • ***
  • Messages: 263
Re : Script php d'envoi de mail ne fonctionne plus.
« Réponse #1 le: 27 Juillet 2012 à 15:26:26 »
Bonjour,

Essaye en ajoutant le "Return-path:"  dans le header de ton script.

Gilles

Hors ligne luxylux

  • Débutant
  • *
  • Messages: 2
Re : Script php d'envoi de mail ne fonctionne plus.
« Réponse #2 le: 27 Juillet 2012 à 18:43:05 »
Merci Gilles
J'ai ajouté le "return-path:"
et réécrit le code en un seul fichier, ca semble marcher, je vais l'intégrer au formulaire final.
<?php

$msg
="";
if(isset(
$_POST['submit']))
{

$from_add "adresse@domainefrom"

$to_add "adresse@domainetarget"

$subject $_POST["txtSubject"];
$message nl2br($_POST["txtDescription"]);


$strSid md5(uniqid(time()));

$headers "From: $from_add \r\n";
$headers .= "Reply-To: $from_add \r\n";
$headers .= "Return-Path: $from_add\r\n";
$headers .= "X-Mailer: PHP \r\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"".$strSid."\"\n\n";
$headers .= "This is a multi-part message in MIME format.\n";

$headers .= "--".$strSid."\n";
$headers .= "Content-type: text/html; charset=utf-8\n";
$headers .= "Content-Transfer-Encoding: 7bit\n\n";
$headers .= $message."\n\n";

if($_FILES["fileAttach"]["name"] != "")
{
$strFilesName $_FILES["fileAttach"]["name"];
$strContent chunk_split(base64_encode(file_get_contents($_FILES["fileAttach"]["tmp_name"]))); 
$headers .= "--".$strSid."\n";
$headers .= "Content-Type: application/octet-stream; name=\"".$strFilesName."\"\n"
$headers .= "Content-Transfer-Encoding: base64\n";
$headers .= "Content-Disposition: attachment; filename=\"".$strFilesName."\"\n\n";
$headers .= $strContent."\n\n";
}


if(mail($to_add,$subject,$message,$headers)) 
{
$msg "Mail sent OK";

else 
{
 
   $msg "Error sending email!";
}
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Test form to email</title>
</head>

<body>
<?php echo $msg ?>
<p>
<form action='<?php echo htmlentities($_SERVER['PHP_SELF']); ?>' method='post' enctype="multipart/form-data">
<table width="443" border="0">
<tr>
<td>Subject</td>
<td><input name="txtSubject" type="text" id="txtSubject"></td>
</tr>
<tr>
<td>Description</td>
<td><textarea name="txtDescription" cols="30" rows="4" id="txtDescription"></textarea></td>
</tr>
<tr>
  <td>Attachment</td>
  <td><input name="fileAttach" type="file"></td>
</tr>

<input type='submit' name='submit' value='Submit'>
</table>
</form>
</p>
</body>
</html>