2010-03-02 3 views
1

J'ai eu du mal 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 effectuez du courrier en PHP, vous pouvez définir manuellement des en-têtes supplémentaires, tels que From, Cc et Bcc, mais vous pouvez également définir Subject, To et Body. Lorsque vous appelez la fonction, vous passez les en-têtes à la fonction mail(), mais cette fonction "demande" également un objet, un corps et un.PHP mail, en-tête et l'appel à la fonction mail(), ce qui a outrepassé?

Ma question est alors: comment PHP gère-t-il la double intention? Si vous définissez manuellement l'en-tête d'avoir Sujet: foo, mais alors dans l'appel de mail passer «foo» le long comme le sujet ...?

Je ne peux pas lire C, donc ouvrir la source PHP ne m'aidera probablement pas ici.

Merci!

Répondre

1

Eh bien, pas besoin de lire C, juste le tester: il est une doublure :)

Si vous spécifiez un sujet dans les deux lieux PHP ne rien de spécial: vous obtenez un e courrier électronique avec deux en-têtes de sujet. Lequel s'affiche dans votre client de messagerie est quelque chose que je ne connais pas; peut-être que c'est défini dans les protocoles de courriel, peut-être que c'est un choix par client. A propos de l'en-tête "To", PHP en définit un du paramètre $ to lorsque vous ne spécifiez pas un en-tête manuellement; Si vous en définissez un, votre en-tête prévaut.

Il est à noter que les en-têtes "De" et "À" n'ont aucun effet sur les personnes qui envoient et reçoivent le message: elles sont purement informatives. Le logiciel de serveur de messagerie nécessite que les expéditeurs et les destinataires soient spécifiés implicitement; les en-têtes ne sont pas analysés à cette fin.

+0

Bon sur le From et To, c'est bon à savoir. Les e-mails de bas niveau lorsque vous utilisez des jeux de caractères universels et des pièces jointes variables sont assez jungle avec tous les RFC et autres. –

1

La question ici semble être si vous spécifiez un 'À' ou un 'Sujet' dans les en-têtes supplémentaires, ce qui apparaît dans l'email produit.

Si oui, alors la réponse est simple de le tester:

$add_to ='to: "added" <[email protected]>"; // substituting your email address 
$param_to ='"param" <[email protected]>"; 
$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); 

Puis un coup d'oeil au message que vous revenez.

C.

+0

Merci! Je peux en effet juste le tester :) Btw: il y a deux erreurs de syntaxe dans votre exemple, les lignes 1 et 2 se terminent par un double guillemet. –

+0

(doh! - malheureusement, S.O. n'a pas d'interface Vim!) Je suppose que vous avez reçu deux emails? Qu'en est-il du sujet? – symcbean