Probleme conditions fonction mail

Résolu/Fermé
Fuji60 Messages postés 23 Date d'inscription jeudi 9 août 2012 Statut Membre Dernière intervention 8 juin 2014 - 20 mars 2013 à 13:39
Fuji60 Messages postés 23 Date d'inscription jeudi 9 août 2012 Statut Membre Dernière intervention 8 juin 2014 - 22 mars 2013 à 17:41
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);


A voir également:

4 réponses

arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
20 mars 2013 à 14:42
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
Fuji60 Messages postés 23 Date d'inscription jeudi 9 août 2012 Statut Membre Dernière intervention 8 juin 2014 1
20 mars 2013 à 17:03
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
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
20 mars 2013 à 17:07
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
ReDLoG Messages postés 243 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 octobre 2021 57
20 mars 2013 à 22:53
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
Fuji60 Messages postés 23 Date d'inscription jeudi 9 août 2012 Statut Membre Dernière intervention 8 juin 2014 1
22 mars 2013 à 17:41
Merci Beaucoup pour votre aide ! le problème est enfin résolue =D
0