1 votes

PHP mail, en-tête et appel à la fonction mail(), qu'est-ce qui est prioritaire ?

Je me suis débattu avec le courrier de bas niveau en PHP et je sais que je devrais utiliser une bibliothèque pour cela, mais ce n'est pas une option pour le moment.

Lorsque vous faites du courrier en PHP, vous pouvez définir manuellement des en-têtes supplémentaires, comme From, Cc et Bcc, mais vous pouvez aussi définir Subject, To et un Body. Lorsque vous appelez la fonction, vous transmettez les en-têtes à la fonction mail(), mais cette fonction "demande" également un sujet, un corps et un destinataire.

Ma question est donc la suivante : comment PHP gère-t-il la double intention dans ce cas ? Si vous configurez manuellement l'en-tête pour qu'il ait pour objet : foo, mais qu'ensuite, dans l'appel au courrier, vous passez 'foo' comme objet... ?

Je ne sais pas lire le C, donc ouvrir les sources de PHP ne m'aidera probablement pas ici.

Merci !

1voto

symcbean Points 27412

La question semble être la suivante : si vous spécifiez un "To" ou un "Subject" dans les en-têtes supplémentaires, qu'est-ce qui apparaît dans l'e-mail produit ?

Si c'est le cas, la réponse simple est de le tester :

$add_to    ='to: "added" <user@example.com>"; // substituting your email address
$param_to  ='"param" <user@example.com>";
$add_subj  ='subject: Subject in header';
$param_subj='Subject in param';

$add_hdr=$add_to . "\n" . $add_subj;
mail($param_to, $param_subj, "body - test", $add_hdr);

Jetez ensuite un coup d'œil au message que vous recevez en retour.

C.

1voto

Álvaro G. Vicario Points 57607

Pas besoin de lire C, il suffit de le tester : c'est un one liner :)

Si vous spécifiez un sujet dans les deux cas, PHP ne fait rien de spécial : vous obtenez un message électronique avec le texte suivant deux en-tête du sujet. Je ne sais pas lequel des deux s'affiche dans votre client de messagerie ; peut-être est-ce défini dans les protocoles de messagerie, peut-être est-ce un choix propre à chaque client.

À propos de l'en-tête "To", PHP en définit un à partir du paramètre $to lorsque vous ne spécifiez pas d'en-tête manuellement ; si vous en définissez un, votre en-tête prévaut.

Il convient de noter que les en-têtes "From" et "To" n'ont aucun effet sur l'identité des expéditeurs et des destinataires du message : ils sont purement informatifs. Les logiciels de serveur de messagerie exigent que les expéditeurs et les destinataires soient spécifiés implicitement ; les en-têtes ne sont pas analysés dans ce but.

0voto

xaoc Points 86

La bonne façon de faire - ne pas utiliser Subject, To et Body dans les en-têtes. Vous pouvez les supprimer des en-têtes avec une expression régulière, si vous prenez les en-têtes tels quels. L'autre solution consiste à utiliser la bibliothèque PEAR. http://pear.php.net/manual/en/package.mail.mail-mime.example.php

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X