Problème de mail || Source : OpenDCF - factux

djsquinje
Messages postés
736
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
- 15 janv. 2016 à 14:36
jordane45
Messages postés
36054
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 août 2022
- 31 janv. 2016 à 20:15
Bonjour à tous,
Bonne année :)

Voici mon code :

<?php   // $Id: convert_client.php 347 2012-05-07 09:11:55Z pcoustillas $ ?>
<?php  
/*Copyright (C) 2003-2004 Guy Hendrickx
Licensed under the terms of the GNU  General Public License:http://www.opensource.org/licenses/gpl-license.php
File Authors:Guy Hendrickx
Modification : Pierre Coustillas*/
 
$type_verif="devis"; //pour vérifier que l'utisateur à le droit de valider ce devis
$num_doc=$_POST['num_dev']; //pour vérifier que l'utisateur à le droit de valider ce devis
require_once(dirname(__FILE__) ."/verif_client.php");
require_once("../include/config/common.php");
require_once("../include/config/var.php");
require_once("../include/language/$lang.php");
 
 
$num_dev=isset($_POST['num_dev'])?$_POST['num_dev']:"";
$login=isset($_POST['login'])?$_POST['login']:"";
$message=isset($_POST['message'])?$_POST['message']:"";
$jour = date("d");
$mois = date("m");
$annee = date("Y");
 
//on recpere les donnée de devis
$sql0 = "SELECT * FROM ${tblpref}devis WHERE num_dev=$num_dev";
$req = mysql_query($sql0) or die("Erreur selection du devis !<br/>$sql0<br/>" . mysql_error());
 
$data = mysql_fetch_array($req);
 
$num_dev = $data['num_dev'];
$client_num = $data['client_num'];
$date = $data['date'];
$tot_htva = $data['tot_htva'];
$tot_tva = $data['tot_tva'];
 
//on les reinjecte dans la base bon_comm
$sql1 = "INSERT INTO ${tblpref}bon_comm ( client_num, date, tot_htva, tot_tva ) VALUES ( $client_num, '$annee-$mois-$jour', $tot_htva, $tot_tva )";
mysql_query($sql1) or die("Erreur création du bon de commande !<br/>$sql1<br/>" . mysql_error());
 
//passer le devis à l'etat ok
$sql2 = "UPDATE ${tblpref}devis SET resu='ok' WHERE num_dev=$num_dev";
mysql_query($sql2) or die("Erreur mise à jour du devis !<br/>$sql2<br/>" . mysql_error());
 
//touver le dernier enregistrement pour le numero de bon
$sql = "SELECT MAX(num_bon) As Maxi FROM ${tblpref}bon_comm";
$result = mysql_query($sql) or die('Erreur');
$max = mysql_result($result, 0);
 
$sql3 = "SELECT * FROM ${tblpref}cont_dev WHERE dev_num=$num_dev";
$req = mysql_query($sql3) or die("Erreur selection du contenu devis !<br/>$sql3<br/>" . mysql_error());
 
//Il faut recréer toutes les lignes de bon
while($data = mysql_fetch_array($req))
{
 
    $article_num = $data['article_num'];
    $quanti = $data['quanti'];
    $tot_art_htva = $data['tot_art_htva'];
    $to_tva_art = $data['to_tva_art'];
     
         
    $sql4 = "INSERT INTO ${tblpref}cont_bon (bon_num, article_num, quanti, tot_art_htva, to_tva_art)
        VALUES ('$max', '$article_num', '$quanti', '$tot_art_htva', '$to_tva_art')";
    mysql_query($sql4) or die("Erreur création des lignes de devis !<br/>$sql4<br/>" . mysql_error());
}
 
 
//a verifier
$from = "$mail" ;
$to = "$mail";
$subject = "devis$lang_de_num $num_dev $lang_con_cli" ;
//$message =  "";
$header = 'From: '.$from."\n"
 .'MIME-Version: 1.0'."\n"
 .'Content-Type: text/html; charset= ISO-8859-1'."\n"
 .'Content-Transfer-Encoding: 7bit'."\n\n";
 
mail($to,$subject,$message,$header);
 
$msg="Devis convertit en commande avec succés";
header("Location: client.php?msg=$msg");
 
?>


J'ai la partie suivante qui ne fonctionne pas :

//a verifier
$from = "$mail" ;
$to = "$mail";
$subject = "devis$lang_de_num $num_dev $lang_con_cli" ;
//$message =  "";
$header = 'From: '.$from."\n"
 .'MIME-Version: 1.0'."\n"
 .'Content-Type: text/html; charset= ISO-8859-1'."\n"
 .'Content-Transfer-Encoding: 7bit'."\n\n";
 
mail($to,$subject,$message,$header);


Savez vous pourquoi ?

Merci de vos réponse ;)

2 réponses

jordane45
Messages postés
36054
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 août 2022
358
15 janv. 2016 à 15:23
Bonjour,

Tu travailles en LOCAL sur ta machine ou tu héberges ton site sur le web ?
Si tu es en LOCAL ... as tu paramétré le SMTP de ton logiciel (WAMP / EasyPhp...) ?

0
djsquinje
Messages postés
736
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
3
15 janv. 2016 à 23:37
Je suis en web, logiquement la mesagerie fonctionne.
Ma page contact fonctionne, donc les paramètres SMTP sont bien configurer
0
djsquinje
Messages postés
736
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
3
16 janv. 2016 à 16:55
Je suis en web, logiquement la mesagerie fonctionne. 
Ma page contact fonctionne, donc les paramètres SMTP sont bien configurer
0
jordane45
Messages postés
36054
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 août 2022
358
19 janv. 2016 à 10:14
Commence par ajouter un peu de debug :
if(mail($to,$subject,$message,$header)){
 echo "Mail envoyé";
}else{
 echo "<br><b>Erreur ! Mail non envoyé</b>";
 echo "<br>header :" .$header;
 echo "<br>to:" .$to;
 echo "<br>subject:" .$subject;

}
0
djsquinje
Messages postés
736
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
3 > jordane45
Messages postés
36054
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 août 2022

19 janv. 2016 à 14:04
Ca ne fonctionne pas et j'ai aucun "Echo" :/
0
jordane45
Messages postés
36054
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 août 2022
358 > djsquinje
Messages postés
736
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017

19 janv. 2016 à 15:18
C'est donc que tu as un autre souci avant....

Ajoutes la ligne :
error_reporting(E_ALL);

Au tout début de ton script PHP.
Ensuite regardes si des erreurs apparaissent.

Et puis... essayes ça :

<?php
//permet l'affichage des erreurs PHP
error_reporting(E_ALL);

/**
* Fonction d’envoi de mail.
*/ 
function Envoi_Mail($from,$to,$subject,$msg="") {
  // Creation de l'entete du mail a envoyer
  // --------------------------------------
  $boundary = md5(uniqid(microtime(), TRUE));
  $headers = "From: $from\r\n";
  $headers .= 'Mime-Version: 1.0'."\r\n";
  $headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
  $headers .= "\r\n";

  // Creation du message a envoyer
  // -----------------------------
  $message  =
  '--' . $boundary . "\r\n" .
  'Content-type: text/html; charset=ISO-8859-15' . "\r\n\r\n
  <html>
   <body style='margin:10px 0px 0px 30px;
                color:#393989;
                font-family:Arial;
                font-size:13px;' >      
    $msg
   </body>
  </html>\r\n";

	 if(mail($to, $objet, $message, $headers)){
		 echo "Mail envoyé";
		 $result = true;
	 }else{
		 $result = false;
		 echo "<br><b>Erreur ! Mail non envoyé</b>";
		 echo "<br>header : ".$header;
		 echo "<br>to: ".$to;
		 echo "<br>subject: ".$subject;
		 echo "<br><b>Message:</b><br>".$message;
	 }
	return $result;
 } 
 
 //a verifier
$from = $mail ;
$to = $mail;
$subject = "devis$lang_de_num $num_dev $lang_con_cli" ;
$message =  "Ceci est un test ";

//on envoie le mail :
Envoi_Mail($from,$to,$subject,$message);
					 
					

0
djsquinje
Messages postés
736
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
3
Modifié par djsquinje le 29/01/2016 à 17:29
Voila le message d'erreur:


Erreur ! Mail non envoyé
header :
to:
subject: devis
Message:
--1eefb692b722fa2ccd3a9335aa183921 Content-type: text/html; charset=ISO-8859-15 Ceci est un test

Desolé pour le retard Jordan
0
jordane45
Messages postés
36054
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 août 2022
358
31 janv. 2016 à 20:15
Petite erreur dans mon code (que tu aurais pu voir par toi même )

function Envoi_Mail($from,$to,$subject,$msg="") {
  // Creation de l'entete du mail a envoyer
  // --------------------------------------
  $boundary = md5(uniqid(microtime(), TRUE));
  $headers = "From: $from\r\n";
  $headers .= 'Mime-Version: 1.0'."\r\n";
  $headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
  $headers .= "\r\n";

  // Creation du message a envoyer
  // -----------------------------
  $message  =
  '--' . $boundary . "\r\n" .
  'Content-type: text/html; charset=ISO-8859-15' . "\r\n\r\n
  <html>
   <body style='margin:10px 0px 0px 30px;
                color:#393989;
                font-family:Arial;
                font-size:13px;' >      
    $msg
   </body>
  </html>\r\n";

	 if(mail($to, $subject, $message, $headers)){
		 echo "Mail envoyé";
		 $result = true;
	 }else{
		 $result = false;
		 echo "<br><b>Erreur ! Mail non envoyé</b>";
		 echo "<br>headers : ".$headers;
		 echo "<br>to: ".$to;
		 echo "<br>subject: ".$subject;
		 echo "<br><b>Message:</b><br>".$message;
	 }
	return $result;
 } 




Il semble (hormis les headers qui sont mal envoyés) que les autres variables ne sont pas passées à ta fonction :
Le to et le subject sont vides....
Normal que ça ne marche pas;
0