2017-06-29 6 views
1
mail = imaplib.IMAP4_SSL('imap.gmail.com', 993) 
username = '[email protected]' 
password = 'MyPasswordHere' 
mail.login(username, password)  
mail.select('INBOX') 

typ, data = mail.search(None, 'ALL') 
for num in data[0].split(): 
    typ, data = mail.fetch(num, '(RFC822)') 
    print(data) 
    exit() 

Ceci est une partie de la production totale: (pas très lisible)python 3.5 imaplib lire Gmail texte brut

[(B'1 (CORPS [1] {} 1115 », b \ r \ NHEJ Bjango pour faire en sorte que côté Bjangos hj = C3 = A6lper vous n = C3 = A5 = \ r \ nLe m = C3 = A5L, nous vous donnons ici quelques suggestions rapides et faciles sur ce que = \ r \ n vous pouvez g = C3 = B8re: Mettez à jour votre photo de profil et votre couverture image = \ r \ nOverf = C3 = B8R = C2 = A0billede UTC = C3 = B8J une description de votre page = \ r \ nTilf = C3 = B8J = C2 = A0en = C2 = A0beskrivelse Inclure un lien vers votre site = \ r \ nTilf = C3 = B8J = C2 = A0et = C2 = A0link Sl = C3 = A5 une mise à jour ou une image vers le haut = \ r \ n p = C3 = A5 Créez votre page = C2 = A0et = C2 = A0opslag Invitez vos amis à = \ r \ nsynes bien sur votre page Inviter = C2 = A0dine = C2 = A0venner \ r \ n \ r \ nHilsen Facebook Équipe \ r \ n \ r \ n \ r \ n \ r \ n = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = \ r \ n = 3D = 3D Message = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D = 3D \ r \ nLa a été envoyé à [email protected] Si vous n'êtes pas = C3 = B8nsker = \ r \ nuit pour recevoir ces e-mails de Facebook à l'avenir, f = C3 = B8lge = \ r \ nnedenst = C3 = A5ende lien pour vous désabonner \ R \ nhttps:. // www.facebook.com/o.php?k=3DAS38jnuCT_H5AdZt & u = 3D100015358233656 & mi = \ r \ nd = 3D548339b6125b3G5af6a3e64c38G0G37b \ r \ nFacebook, Inc., Attention: soutien communautaire, 1 Way Hacker, Menlo Park, CA = \ r \ n94025 \ r \ n \ r \ n '), b') « ]

voici donc ma question Comment puis-je faire la partie principale du courrier que je reçu lisible?


Un exemple de ce que je veux dire par lisible:

Cher Bjango

Ceci est un message, som totalement lisible sans alanyl "<<td style=3D"font-size: 16px; =\r\npadding-bottom: 26px; text-ali>". Ce drôle est que je viens de faire une partie de ce courrier att illisible a été Censé deux être lisible - J'espère que vous obtenez le point.

Cordialement Bjango

Cette approche ne résout pas complètement mon problème avec la lisibilité:

import email 
msg = email.message_from_bytes(data[0][1]) 
print(msg.get_payload(decode=False)) 

sortie sera comme suit:

Hej Bjango For at sikre, at Bjangos side hj=C3=A6lper dig med at n=C3=A5 = 
dine m=C3=A5l, giver vi dig her nogle hurtige og nemme forslag til, hvad = 
du kan g=C3=B8re: Opdater dit profilbillede og dit coverbillede = 
Overf=C3=B8r=C2=A0billede Tilf=C3=B8j en beskrivelse af din side = 
Tilf=C3=B8j=C2=A0en=C2=A0beskrivelse Medtag et link til dit website = 
Tilf=C3=B8j=C2=A0et=C2=A0link Sl=C3=A5 en opdatering eller et billede op = 
p=C3=A5 din side Opret=C2=A0et=C2=A0opslag Inviter dine venner til at = 
synes godt om din side Inviter=C2=A0dine=C2=A0venner 

Hilsen Facebook-teamet 
  • Mais aucun le moins, c'est un amélioration massive

C'est l'e-mail Je souhaite obtenir dans la section de sortie:

Hej Bjango Pour à sikre, à côté Bjangos hjælper dig med à nå dînent mål, dispensateur vi creuser son nogle hurtige og nemme Forslag til, hvad du kan GORÉ: Opdater dit profilbillede og dit coverbillede Overfører billeder Tilføj en Beskrivelse af din côté Tilføj en Beskrivelse Medtag et lien jusqu'à ce site dit Tilføj et lien Slå en opdatering eller et billede op på din côté Opr et et Opslag inviteur dine Venner til à synes godt côté om din inviteur dine Venner

Hilsen Facebook-teamet

+0

Pourriez-vous spécifier un littl e plus ce que vous voulez dire par lisible? Pouvez-vous décrire spécifiquement quel est le résultat/résultat souhaité? Avez-vous aussi regardé l'exemple de code d'imaplib: https://docs.python.org/2/library/imaplib.html#imap4-example Est-ce suffisamment lisible ou avez-vous besoin de quelque chose de plus spécifique? – jsalonen

+0

C'était l'exemple de code que j'ai utilisé^J'ai aussi mis à jour ma question – Bjango

+0

Votre code n'est pas identique: l'exemple affiche 'data [0] [1]'. Serait-ce suffisamment lisible? Voulez-vous dire que vous voulez seulement imprimer le corps de l'email? – jsalonen

Répondre

1

Python 3 email parser devrait fonctionner ici:

import email 
msg = email.message_from_bytes(data[0][1]) 
payload = msg.get_payload(decode=True) 

En supposant que votre email est codé comme MIME données quoted-imprimable, vous pouvez procéder à décoder cela en utilisant quopri module:

import quopri 
message = quopri.decodestring(payload).decode('utf-8') 

print(message) 
+0

C'était la réponse d'ici: https://stackoverflow.com/questions/19540192/imap-get-sender-name-and-body-text Qui n'a pas travaille pour moi. J'ai déjà essayé ça. Cela n'a rien changé. Tu pourrais essayer toi-même? avec l'entrée de ma question - n'oubliez pas d'utiliser python3 – Bjango

+0

@Bjango J'ai vérifié que le code ci-dessus fonctionne pour Python 3. S'il vous plaît regardez le code de plus près. J'utilise 'message_from_bytes', pas' message_from_string', car Python 3 gère ces messages comme des octets et non comme des chaînes. – jsalonen

+0

Je suis tellement désolé, il a manqué ce détail. Vous avez raison, cela fonctionne. Pas complètement comme je l'avais prévu. – Bjango