8721 sujets

Développement web côté serveur, CMS

Bonjour à tous
Problème bizarre.
Dans le champ "to" d'un envoi de mail je cherche à obtenir la forme "Pierrre Dupont"<pdupont@toto.net>"
Si j'écris

$firstName = "Pierre";
$lastName = "Dupont";
$mail = "pdupont@toto.net";
$to = "\"$firstName $lastName\"<$mail>";

J'obtiens "Pierre Dupont" sans la suite.
Après divers essais j'en déduis que c'est le caractère "<" qui pose problème
Si je le remplace par "+" ça marche très bien.
Je n'ai aucun souvenir d'avoir précédemment rencontré ce problème ni trouvé aucune documentation à ce sujet.
Est-ce que cela vous dit quelque chose?

Edit: si j'écris
$to = "\"$firstName $lastName\"&lt;$mail>";

ça semble marcher, mais je ne trouve toujours pas d'info à ce sujet

Edit2: en fait ça ne marche pas: la fonction php mail() refuse cette forme.
Modifié par PapyJP (13 Sep 2021 - 22:30)
Modérateur
Et l'eau,

Regarde dans la doc de htmlentities. De mémoire, il y a une constante pour les champs.

edit : manque un ; Smiley cligne
Modifié par niuxe (13 Sep 2021 - 18:23)
Merci pour ta réponse (et pour l'avoir signalé le ";"" manquant que je me suis empressé de corriger dans le premier message) Smiley cligne

Je pense avoir compris: quand php affiche la variable, le navigateur prend la chaine de caractères <$mail> pour une balise.
En d'autres termes, c'est l'affichage de var_dump qui produit cet effet, la chaîne de caractères est correcte.
Je vérifierai demain si tout est OK, il est un peu tard pour ce soir.
Oui, c'était bien ça.
Je me suis fait ma propre fonction de "dump" qui imprime en tête le nom du fichier php et la ligne d'appel.
Si la variable à imprimer est un array ou un objet, cette fonction fait appel à print_r, mais si c'est un scalaire je faisais :
echo $arg;

j'ai corrigé en :
echo htmlspecialchars($arg);


Moyennant quoi la fonction mail de php n'accepte pas ce format dans "to", mais c'est une autre histoire...
Modifié par PapyJP (14 Sep 2021 - 21:43)
Hello @PapyJP,

PapyJP a écrit :

Dans le champ "to" d'un envoi de mail je cherche à obtenir la forme "Pierrre Dupont"&lt;pdupont@toto.net&gt;"
Si j'écris

$firstName = "Pierre";
$lastName = "Dupont";
$mail = "pdupont@toto.net";
$to = "\"$firstName $lastName\"&lt;$mail&gt;";

J'obtiens "Pierre Dupont" sans la suite.


Je crois qu'il n'y a pas de guillemets dans le champ to du mail, comme indiqué dans les paramètres dans la doc PHP de la fonction mail().

Le bon format semble donc être
User <user@example.com>

au lieu de
"User" <user@example.com>


As-tu essayé ?
Modifié par Loraga (15 Sep 2021 - 13:23)
Merci de ta réponse
Dans la mesure où le nom de l'utilisateur est Pierre Dupont, il est obligatoire de le mettre entre guillemets à cause de l'espace.
Comme je suis en train de refaire toute cette portion du site, je laisse de côté pour le moment, je reverrai ça en temps utile.