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

Messages postés
771
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
- - Dernière réponse : jordane45
Messages postés
26552
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 octobre 2019
- 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 ;)
Afficher la suite 

2 réponses

Messages postés
26552
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 octobre 2019
316
0
Merci
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...) ?

djsquinje
Messages postés
771
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
2 -
Je suis en web, logiquement la mesagerie fonctionne.
Ma page contact fonctionne, donc les paramètres SMTP sont bien configurer
Commenter la réponse de jordane45
Messages postés
771
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
2
0
Merci
Je suis en web, logiquement la mesagerie fonctionne. 
Ma page contact fonctionne, donc les paramètres SMTP sont bien configurer
jordane45
Messages postés
26552
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 octobre 2019
316 -
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;

}
djsquinje
Messages postés
771
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
2 > jordane45
Messages postés
26552
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 octobre 2019
-
Ca ne fonctionne pas et j'ai aucun "Echo" :/
jordane45
Messages postés
26552
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 octobre 2019
316 > djsquinje
Messages postés
771
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
-
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);
					 
					

djsquinje
Messages postés
771
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
2 -
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
jordane45
Messages postés
26552
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 octobre 2019
316 -
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;
Commenter la réponse de djsquinje