code_junkie

Trouble with encoding in emails

Nov 13th, 2011
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.71 KB | None | 0 0
  1. pop = poplib.POP3(server)
  2.  
  3. mail_list = pop.list()[1]
  4.  
  5. for m in mail_list:
  6. mno, size = m.split()
  7. lines = pop.retr(mno)[1]
  8.  
  9. file = StringIO.StringIO("rn".join(lines))
  10. msg = rfc822.Message(file)
  11.  
  12. body = file.readlines()
  13.  
  14. f = open(str(random.randint(1,100)) + ".email", "w")
  15. f.write(msg["From"] + "n")
  16. f.write(msg["Subject"] + "n")
  17. f.write(msg["Date"] + "n")
  18.  
  19. for b in body:
  20. f.write(b)
  21.  
  22. import email
  23. import poplib
  24. import random
  25. from cStringIO import StringIO
  26. from email.generator import Generator
  27.  
  28. pop = poplib.POP3(server)
  29.  
  30. mail_count = len(pop.list()[1])
  31.  
  32. for message_num in xrange(mail_count):
  33. message = "rn".join(pop.retr(message_num)[1])
  34. message = email.message_from_string(message)
  35.  
  36. out_file = StringIO()
  37. message_gen = Generator(out_file, mangle_from_=False, maxheaderlen=60)
  38. message_gen.flatten(message)
  39. message_text = out_file.getvalue()
  40.  
  41. filename = "%s.email" % random.randint(1,100)
  42. email_file = open(filename, "w")
  43. email_file.write(message_text)
  44. email_file.close()
  45.  
  46. import poplib, quopri
  47. import random, md5
  48. import sys, rfc822, StringIO
  49. import email
  50. from email.Generator import Generator
  51.  
  52. password = "password"
  53. server = "mail.example.com"
  54.  
  55. # connects
  56. try:
  57. pop = poplib.POP3(server)
  58. except:
  59. print "Error connecting to server"
  60. sys.exit(-1)
  61.  
  62. # user auth
  63. try:
  64. print pop.user(user)
  65. print pop.pass_(password)
  66. except:
  67. print "Authentication error"
  68. sys.exit(-2)
  69.  
  70. # gets the mail list
  71. mail_list = pop.list()[1]
  72.  
  73. for m in mail_list:
  74. mno, size = m.split()
  75. message = "rn".join(pop.retr(mno)[1])
  76. message = email.message_from_string(message)
  77.  
  78. # uses the email flatten
  79. out_file = StringIO.StringIO()
  80. message_gen = Generator(out_file, mangle_from_=False, maxheaderlen=60)
  81. message_gen.flatten(message)
  82. message_text = out_file.getvalue()
  83.  
  84. # fixes mime encoding issues (for display within html)
  85. clean_text = quopri.decodestring(message_text)
  86.  
  87. msg = email.message_from_string(clean_text)
  88.  
  89. # finds the last body (when in mime multipart, html is the last one)
  90. for part in msg.walk():
  91. if part.get_content_type():
  92. body = part.get_payload(decode=True)
  93.  
  94. filename = "%s.email" % random.randint(1,100)
  95.  
  96. email_file = open(filename, "w")
  97.  
  98. email_file.write(msg["From"] + "n")
  99. email_file.write(msg["Return-Path"] + "n")
  100. email_file.write(msg["Subject"] + "n")
  101. email_file.write(msg["Date"] + "n")
  102. email_file.write(body)
  103.  
  104. email_file.close()
  105.  
  106. pop.quit()
  107. sys.exit()
  108.  
  109. import email.Header
  110. import sys
  111.  
  112. header_and_encoding = email.Header.decode_header(sys.stdin.readline())
  113. for part in header_and_encoding:
  114. if part[1] is None:
  115. print part[0],
  116. else:
  117. upart = (part[0]).decode(part[1])
  118. print upart.encode('latin-1'),
  119. print
Add Comment
Please, Sign In to add comment