8722 sujets

Développement web côté serveur, CMS

Bonjour

Dans mon Client de messagerie fait maison, je recherche dans l’en-tête d’un message reçu l’adresse mail de l’émetteur :

$mailReponse = $message->headers[‘from’];


Avec certains serveurs de messagerie, je récupère de cette manière une adresse mail valide mais pas avec d’autres (Gmail, …) ; pour ceux là, en imprimant le contenu de ma variable $mailReponse, il n’y a pas d’arobase dedans.

En cherchant avec strpos() dans cette même variable $mailReponse, je trouve bien une @ dans chaque valeur.

En imprimant ce qu’il y a autour de la position de l’arobase :
• Sur la droite, au-delà du champ qui suit naturellement l’arobase, il n’y a plus rien, ce qui facilite une récupération sur la droite
• Sur la gauche, par contre, les résultats sont beaucoup plus difficiles à interpréter

En allant plus loin, j’ai recherché les signes < et > qui apparaissent souvent dans une adresse mail ; j’en ai trouvé dans chaque situation où je ne récupérai pas une adresse valide.

Mais ce que je récupère là ne s’était pas affiché autour de la position de l’arobase, caché d’une manière qui m’échappe.

J’aimerai beaucoup en savoir un peu plus sur la récupération d’une adresse dans l’en-tête d’un mail et comprendre la cause de ces situations où la variable headers[‘from’] ne donne pas une adresse de manière directe.

Merci par avance à celui qui aura un conseil.

Francois
bonjour

Ta question m'intéresse parce qu'elle soulève un sujet que je ne connais pas.

En un mot, je n'utilise pas de librairie; je suis hébergé en mutualisé chez OVH, si ça peut correspondre à ta question.

Merci à toi.

Francois
bonjour

Je ne peux pas répondre à ta question car ce domaine des classes et des instances m'est inconnu; je sais tout juste que ça existe.

Si la piste d'une solution réside là, je crains qu'elle soit au delà de mes compétences limitées.

Sauf si tu trouves une piste à m'indiquer.

Merci en tout cas de tes réponses.

Francois

$mailReponse = $message->headers[‘from’];


C'est de la POO ça, mais je peux pas t'aider sans que tu me donne le code qui est exécuté avant cette ligne.
Administrateur
Bonjour,

une piste pour au moins certains serveurs de mail : il y a parfois une ligne Authenticated(...)Sender avec le vrai expéditeur. La ligne From est librement modifiable elle (cf. les discussions au boulot où 'Alsacréations' répond à 'Alsacréations')

Pour l'arobase, il serait pas encodé ? Comme &#39; pour le guillemet "
Ou bien encodage différent iso-8859-15 vs. UTF-8 ?

Rappel : la collecte de données personnelles (les adresses mail en font partie) sont bien entendu encadrées et réglementées par les législations française, européenne et quelques autres pays dans le monde...
edit2: ah non t'es en train d'écrire un client de messagerie, j'avais mal compris
Modifié par Felipe (09 Mar 2013 - 10:29)
bonjour

Voila, je crois, l'essentiel du code:

$mail_cnx = @imap_open ("{".$serveur_entrant.$port.$protocole.$options."}".$boite, $identifiant, $mot_de_passe)

Mail/mimeDecode.php
$mimeParams = array();
$mimeParams['decode_headers'] = true;
$mimeParams['crlf'] = "\r\n";
$mimeParams['include_bodies'] = true;
$mimeParams['decode_bodies'] = true;

$header = imap_fetchheader($mail_cnx, $i, FT_PREFETCHTEXT);
$mimeParams['input'] = $header.$body;
$message = Mail_mimeDecode::decode($mimeParams);


Merci de ton aide.

Francois
Non, l'arobase n'est pas encodée, du moins avec les messages sans <>.

Simplement, avec les messages encadrés par <>, ce que je récupère avec $message->headers[‘from’] comporte ce qui apparaît comme un espace, qui n'existe pas avec les messages sans <>.

Ensuite, quand je cherche @ et <>, je trouve des informations qui ne s'étaient pas affichées à la récupération initiale.

Quelque chose m'échappe.

Francois
++++++++++++++++++++++++++++++++++++++++++++++++++++++
Est ce que la dernière ligne du code que j'ai posté ne répondrait pas à la question d'Ilar sur instance / classe?

Francois
Modifié par francoisch (12 Mar 2013 - 09:13)