[Python] Het extracten van een mail body

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • CP3BEST
  • Registratie: September 2012
  • Laatst online: 18-11-2023
Ik ben voor mij zelf bezig met een soort bot, geschreven in Python.
Mijn doel is om gmail te lezen en als een mail een bepaald onderwerp heeft, de body om te zetten naar een string en te gebruiken in een functie.

Het is me al gelukt om te connecten met gmail, het onderwerp te printen en te gebruiken maar ik snap niet hoe ik de body er uit kan halen.

Mijn code tot nu toe:
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
"""
| connent with the server |
"""
import imaplib
import email
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('example@gmail.com', 'P@ssW0rd')
mail.list()
mail.select('inbox')
typ, data = mail.search(None, 'ALL')
ids = data[0]
id_list = ids.split()
latest_email_id = int( id_list[-1] )

"""
| loop trough mail box |
"""
for i in range( latest_email_id, latest_email_id-1, -1 ):
     typ, data = mail.fetch( i, '(RFC822)' )

     for response_part in data:
          if isinstance(response_part, tuple):
          msg = email.message_from_string(response_part[1])
          varBody = msg['body']
          varSubject = msg['subject']

    varSubjectLower = varSubject.lower

    if varSubjectLower == "server":
        print varSubjectLower
    else:
         print 'Not for a server'

     if varBody == "Admin":
         print varBody
         """document_whitelist = open('F:\HAHAHA\whitelist.txt', 'r+')
         document_whitelist.write(str(varBody) + '\n')
         document_op = open('F:\HAHAHA\ops.txt', 'r+')
         document_op.write(str(varBody) + '\n')"""
     else: 
         document_whitelist = open('F:\HAHAHA\whitelist.txt', 'r+')
         document_whitelist.write(str(varBody) + '\n')



Ik hoop dat iemand hier meer verstand van heeft

[ Voor 0% gewijzigd door BtM909 op 25-03-2013 17:54 ]

Je weet zeluf


Acties:
  • 0 Henk 'm!

  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 14:48
Je doet nu net of 'body' een header van een bericht is. Je moet de 'payload' hebben, maar je moet ook rekening houden met multipart messages en besluiten of je alleen text/plain wilt en/of ook text/html. Zie de relevante documentatie.

offtopic:
En voor code zijn er [code] tags.


Later wil je misschien nog zorgen dat charsets goed afgehandeld worden. Dat geldt ook voor headers (zoals subject) trouwens, daarin kunnen speciale karakters gecodeerd zijn. Python maakt het vrij makkelijk om dat soort dingen te doen (met str/unicode methoden voor encode/decode en specifieke functies in email.utils), maar dan moet je wel iets weten van character encoding en MIME.