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

Signaler
Messages postés
736
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
-
Messages postés
33126
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juillet 2021
-
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

Messages postés
33126
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juillet 2021
351
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...) ?

Messages postés
736
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
3
Je suis en web, logiquement la mesagerie fonctionne.
Ma page contact fonctionne, donc les paramètres SMTP sont bien configurer
Messages postés
736
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
3
Je suis en web, logiquement la mesagerie fonctionne. 
Ma page contact fonctionne, donc les paramètres SMTP sont bien configurer
Messages postés
33126
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juillet 2021
351
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;

}
Messages postés
736
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
3 >
Messages postés
33126
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juillet 2021

Ca ne fonctionne pas et j'ai aucun "Echo" :/
Messages postés
33126
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juillet 2021
351 >
Messages postés
736
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);
					 
					

Messages postés
736
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
3
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
Messages postés
33126
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juillet 2021
351
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;