2010-12-01 5 views
0

J'utilise le module de courrier électronique de la bibliothèque standard python pour analyser le courrier électronique. Quelque chose comme ceci me permet de déterminer l'expéditeur:Champ 'À' lors de l'analyse du courrier électronique en Python

msg = email.message_from_string(data) 
sender = msg.get_unixfrom() 

Mais j'ai de la difficulté à déterminer à qui le courrier est destiné.

Pensées?

+0

Notez que 'sender' dans votre exemple est le [ "enveloppe de"] (http://en.wikipedia.org/wiki/Envelope_from) du message , pas l'en-tête "From:" du message. –

Répondre

0

Vous pouvez toujours utiliser le __getitem__(name) où nom est le nom du champ d'en-tête que vous voulez récupérer; dans ce cas "To", "Cc" et "Cci".

plus d'informations sont disponibles à l'adresse: http://docs.python.org/library/email.message.html

+0

Vous pouvez éviter les traits de soulignement avec un antislash. Ou utilisez des ticks pour le marquer comme code;) – AndiDog

+0

En-tête de Bcc sera supprimé avant la livraison, autant que je sais qu'il existe seulement en session smtp – drul

5

Vous pouvez accéder à tous les en-têtes du message by index, par exemple msg["From"]. Dans le cas du destinataire, utilisez msg.get_all("To") car il peut y avoir plusieurs valeurs.

Notez également les éléments suivants:

en-têtes sont stockés et retournés sous forme de cas, mais la conservation sont insensibles à la casse.

1

Exemple session interactive:

>>> import email 
>>> msg = email.message_from_string("from: me\nto: you\n\nTest\n") 
>>> msg.get_all('to') 
['you'] 
>>> msg['to'] 
'you' 
>>> 
Questions connexes