Probleme conditions fonction mail

Résolu
Fuji60 Messages postés 23 Statut Membre -  
Fuji60 Messages postés 23 Statut Membre -
Bonjour à tous,

j'ai un problème avec ma fonction mail. C'est à dire que lorsque je met la condition if, le mail ne s'envoie pas, mais lorsque je l'enlève, il n'y a aucun problème il s'envoie. Je pense qu'il y a surement un problème de syntaxe mais je ne vois pas ou. Voici mon code :
// To
$to = $payer_email;

// Subject
$subject = " Objet ";

// clé aléatoire de limite
$boundary = md5(uniqid(microtime(), TRUE));

// Headers
$headers = 'From: exemple <mail@server.com>'."\r\n";
$headers .= 'Mime-Version: 1.0'."\r\n";
$headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
$headers .= "\r\n";

// Message
$msg = 'Texte affiché par des clients mail ne supportant pas le type MIME.'."\r\n\r\n";

// Message HTML
$msg .= '--'.$boundary."\r\n";
$msg .= 'Content-type: text/html; charset=utf-8'."\r\n\r\n";
$msg .= ' 
<p style="font-size: 20px;"> Bonjour, </p>
<p> Voici le récapitulatif </p>
<br />
Nom  : ' .$first_name. ' ' .$last_name. '<br />
Adresse e-mail : ' .$payer_email. '<br /><br />
<hr /><br />

<strong> Détail de la commande </strong><br />


Objet en commande : '  .$item_name. '<br />
Numéro de lobjet : '  .$item_number. '<br />
Numéro de la facture : ' .$invoice. '<br /><br />'
if(!empty($objet2))
{'
Objet en commande : '  .$item_name2. '<br />
Numéro de lobjet : '  .$item_number2. '<br />';
}'


'."\r\n";


// Fin
$msg .= '--'.$boundary."\r\n";

// Function mail()
mail($to, $subject, $msg, $headers);


4 réponses

  1. arth Messages postés 84 Date d'inscription   Statut Contributeur Dernière intervention   1 296
     
    Est-ce qu'il est possible de mettre des fonctions lorsque l'on veut remplir une variable avec du texte? Enfin est-ce que PHP permet cela?

    Sinon

    if(!empty($objet2))
    {'
    Objet en commande : ' .$item_name2. '<br />
    Numéro de lobjet : ' .$item_number2. '<br />';
    }'

    Je suis pas sûr que PHP aime un ; tout seul au milieu d'une fonction.
    0
  2. Fuji60 Messages postés 23 Statut Membre 1
     
    Je pense que c'est autorisé, car l'utilisation de fonctions sur une fonction mail est très utilisé, même chez les prestataires e-commerce, je pense que c'est juste un problème de syntaxe au niveau de mon if.
    Oui effectivement, mais même en l'enlevant, le problème persiste :/
    0
  3. arth Messages postés 84 Date d'inscription   Statut Contributeur Dernière intervention   1 296
     
    Non ce que je voulais dire, c'est mettre une fonction dans l'attribution d'un texte, parce qu'ici à moins que je vois mal, le $msg est forgé directement avec la fonction if à l'intérieur.

    Moi j'aurais fait :

    $msg = première partie message;

    if(...)
    {
    $msg .= $msg.'.............';
    }

    Enfin c'est ma façon de voir, je ne sais pas programmer le PHP :-)
    0
    1. ReDLoG Messages postés 393 Statut Membre 57
       
      Bonsoir,

      Comportement normal car la condition se trouve à l'intérieur de la variable $msg
      Donc il faut modifier ton code afin de concaténer le résultat de la condition if si elle est évaluée. Exemple :
      // Message HTML
      $msg .= '--'.$boundary."\r\n";
      $msg .= 'Content-type: text/html; charset=utf-8'."\r\n\r\n";
      $msg .= '
      <p style="font-size: 20px;"> Bonjour,</p>
      <p>Voici le récapitulatif</p>
      <br />
      Nom  : ' .$first_name. ' ' .$last_name. '<br />
      Adresse e-mail : ' .$payer_email. '<br /><br />
      <hr /><br />
      
      <strong> Détail de la commande </strong><br />
      
      Objet en commande : ' .$item_name. '<br />
      Numéro de lobjet : ' .$item_number. '<br />
      Numéro de la facture : ' .$invoice. '<br /><br />';
      if(!empty($objet2)) {
      	$msg .= 'Objet en commande : ' .$item_name2. '<br />
      	Numéro de l\'objet : ' .$item_number2. '<br />';
      }
      $msg .= "\r\n";
      0
  4. Fuji60 Messages postés 23 Statut Membre 1
     
    Merci Beaucoup pour votre aide ! le problème est enfin résolue =D
    0