|
||||||
| Python Discussion forum for Python, a high-level language with simple syntax, but yet powerful. |
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
| Sponsored Links |
|
|
|
|||||
|
hey Goeasy,
i solved this problem with another python code ![]() it is not useful as like this, and has more more line of codes ![]() Code:
import poplib
import email
import email.parser
import os
import sys
class email_attachment:
def __init__(self, messagenum, attachmentnum, filename, contents):
'''
arguments:
messagenum - message number of this message in the Inbox
attachmentnum - attachment number for this attachment
filename - filename for this attachment
contents - attachment's contents
'''
self.messagenum=messagenum
self.attachmentnum=attachmentnum
self.filename=filename
self.contents=contents
return
def save(self, savepath, savefilename=None):
'''
Method to save the contents of an attachment to a file
arguments:
savepath - path where file is to be saved
safefilename - optional name (if None will use filename of attachment
'''
savefilename=savefilename or self.filename
f=open(os.path.join(savepath, savefilename),"wb")
f.write(self.contents)
f.close()
return
class email_msg:
def __init__(self, messagenum, contents):
self.messagenum=messagenum
self.contents=contents
self.attachments_index=0 # Index of attachments for next method
self.ATTACHMENTS=[] # List of attachment objects
self.msglines='\n'.join(contents[1])
#
# See if I can parse the message lines with email.Parser
#
self.msg=email.parser.Parser().parsestr(self.msglines)
if self.msg.is_multipart():
attachmentnum=0
for part in self.msg.walk():
# multipart/* are just containers
mptype=part.get_content_maintype()
filename = part.get_filename()
if mptype == "multipart": continue
if filename: # Attached object with filename
attachmentnum+=1
#self.ATTACHMENTS.append(email_attachment(messagenum,attachmentnum,filename,part.get_payload(decode=1)))
#print "Attachment filename=%s" % filename
else: # Must be body portion of multipart
self.body=part.get_payload()
else: # Not multipart, only body portion exists
self.body=self.msg.get_payload()
return
def get(self, key):
try: return self.msg.get(key)
except:
emsg="email_msg-Unable to get email key=%s information" % key
print emsg
sys.exit(emsg)
def has_attachments(self):
return (len(self.ATTACHMENTS) > 0)
def __iter__(self):
return self
def next(self):
#
# Try to get the next attachment
#
try: ATTACHMENT=self.ATTACHMENTS[self.attachments_index]
except:
self.attachments_index=0
raise StopIteration
#
# Increment the index pointer for the next call
#
self.attachments_index+=1
return ATTACHMENT
class pop3_inbox:
def __init__(self, server, userid, password):
self._trace=0
if self._trace: print "pop3_inbox.__init__-Entering"
self.result=0 # Result of server communication
self.MESSAGES=[] # List for storing message objects
self.messages_index=0 # Index of message for next method
#
# See if I can connect using information provided
#
try:
if self._trace: print "pop3_inbox.__init__-Calling poplib.POP3(server)"
self.connection=poplib.POP3(server)
if self._trace: print "pop3_inbox.__init__-Calling connection.user(userid)"
self.connection.user(userid)
if self._trace: print "pop3_inbox.__init__-Calling connection.pass_(password)"
self.connection.pass_(password)
except:
if self._trace: print "pop3_inbox.__init__-Login failure, closing connection"
self.result=1
self.connection.quit()
#
# Get count of messages and size of mailbox
#
if self._trace: print "pop3_inbox.__init__-Calling connection.stat()"
self.msgcount, self.size=self.connection.stat()
#
# Loop over all the messages processing each one in turn
#
for msgnum in range(1, self.msgcount+1):
self.MESSAGES.append(email_msg(msgnum,self.connection.retr(msgnum)))
if self._trace: print "pop3_inbox.__init__-Leaving"
return
def close(self):
self.connection.quit()
return
def remove(self, msgnumorlist):
if isinstance(msgnumorlist, int): self.connection.dele(msgnumorlist)
elif isinstance(msgnumorlist, (list, tuple)):
map(self.connection.dele, msgnumorlist)
else:
emsg="pop3_inbox.remove-msgnumorlist must be type int, list, or tuple, not %s" % type(msgnumorlist)
print emsg
sys.exit(emsg)
return
def __iter__(self):
return self
def next(self):
#
# for next file
#
try: MESSAGE=self.MESSAGES[self.messages_index]
except:
self.messages_index=0
raise StopIteration
#
# incr. pointer index for next..
#
self.messages_index+=1
return MESSAGE
def getMail(server,userid,password):
inbox=pop3_inbox(server, userid, password)
if inbox.result:
emsg="Connection error with pop3.."
print emsg
sys.exit(emsg)
for m in inbox:
print m.body
# if u wanna get attachments.. use this..
######################################################################################
# #
# if m.has_attachments(): #
# acounter=0 #
# for a in m: #
# acounter+=1 #
# print "%i: %s" % (acounter, a.filename) #
# a.save(r"/home/gaffaro") # select save path in ur computer #
######################################################################################
#
# See if I can delete all messages
#
#if inbox.msgcount: inbox.remove(range(1, inbox.msgcount+1))
inbox.close()
server ="ur host ex mail.urmailhost.com"
userid ="ur username"
password ="ur password"
getMail(server,userid,password)
|
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | Search this Thread |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Php Mail | Jaan | PHP Forum | 4 | 07-17-2008 07:26 AM |
| Problem with mail headers | ReekenX | PHP Forum | 4 | 06-14-2008 09:02 AM |
| Don't use mail()? | bruder | PHP Forum | 3 | 01-24-2008 05:58 PM |
| php mail function, how to use it? | falco85 | PHP Forum | 3 | 08-21-2006 05:16 PM |
| WingedPanther | ........ | 2753.6 |
| Xav | ........ | 2704 |
| Brandon W | ........ | 1702.32 |
| John | ........ | 1207.73 |
| marwex89 | ........ | 1175.24 |
| morefood2001 | ........ | 966.05 |
| dcs | ........ | 655.75 |
| Steve.L | ........ | 475.59 |
| orjan | ........ | 418.58 |
| Aereshaa | ........ | 383.54 |