def extract_text(email):
    '''need to map all parts of the emails so as to get the body of text'''
    parts = []
    for part in email.walk():
        if part.get_content_type() == 'text/plain':
            parts.append(part.get_payload())
    return ''.join(parts)
コード例 #2
0
def extract(email,content_types=[]):
    """ extracts content with the given content-type from a multi-part email """
    content = []
    for part in email.walk():
        if part.get_content_type() in content_types:
            content.append( (part.get_content_type(),part.get_payload(decode=1)) )
    
    return content
コード例 #3
0
ファイル: utils.py プロジェクト: younesZdDz/spam_filter
def email_to_text(email):
    for part in email.walk():
        ctype= part.get_content_type()
        if not ctype in ('text/plain', 'text/html'):
            continue 
        try:
            content= part.get_content()
        except:
            content = str(part.get_payload())
        return content
コード例 #4
0
def email_to_plain(email):
    for part in email.walk():
        part_content_type = part.get_content_type()
        if part_content_type not in ['text/plain', 'text/html']:
            continue
        try:
            part_content = part.get_content()
        except:  # in case of encoding issues
            part_content = str(part.get_payload())
        if part_content_type == 'text/plain':
            return part_content
        else:
            return html_to_plain(part)
コード例 #5
0
ファイル: message.py プロジェクト: NobleMathews/MailCord
def get_attachments(message, email):
    try:
        for part in email.walk():
            content_disposition = part.get('Content-Disposition')
            if content_disposition and 'attachment' in content_disposition:
                filename = part.get_filename()
                data = part.get_payload(decode=True)
                message.add_attachment(AttachmentPart(filename, data))
        return message

    except Exception as error:
        # logger.error('Cannot get PDF from email: %s' % error)
        print('error parsing attachment: {}'.format(error))
コード例 #6
0
def email_to_text(email):
    html = None
    for part in email.walk():
        ctype = part.get_content_type()
        if not ctype in ("text/plain",'text/html'):
            continue
        try:
            content = part.get_content()
        except:
            content = str(part.get_content())
        if ctype == 'text/plain':
            return content
    if html:
        return html_to_plain_text(html)
コード例 #7
0
ファイル: message.py プロジェクト: NobleMathews/MailCord
def get_html_body(message, email):
    try:
        html_body = ''
        has_html_body = False

        for part in email.walk():
            if part.get_content_type() == 'text/html':
                has_html_body = True
                html_body += part.get_payload()
        if has_html_body:
            message.add_html_body(html_body)
        return message
    except Exception as error:
        # logger.error('Cannot get email body: %s' % error)
        print('error retrieving email body: {}'.format(error))
コード例 #8
0
    def readHtmlPartFromMail(self, email):
        """
        Read text part from mail which is of multipart type
        :param email: imap email object
        :return: html content fetched from the mail
        """

        for part in email.walk():
            contentType = part.get_content_type()
            disp = str(part.get("Content-Disposition"))
            if contentType == "text/html" and "attachment" not in disp:
                charset = part.get_content_charset()
                htmlBody = part.get_payload(decode=True).decode(
                    encoding=charset, errors="ignore")
                return htmlBody
コード例 #9
0
def email_to_text(email):
    html = None
    for part in email.walk():
        ctype = part.get_content_type()
        if not ctype in ("text/plain", "text/html"):
            continue
        try:
            content = part.get_content()
        except: # in case of encoding issues
            content = str(part.get_payload())
        if ctype == "text/plain":
            return content
        else:
            html = content
    if html:
        return html_to_plain_text(html)
コード例 #10
0
ファイル: message.py プロジェクト: NobleMathews/MailCord
def get_text_body(message, email):
    """Get body of a Message."""
    try:
        text_body = ''
        has_text_body = False

        for part in email.walk():
            if part.get_content_type() == 'text/plain':
                has_text_body = True
                text_body += part.get_payload()
        if has_text_body:
            message.add_text_body(text_body)
        return message
    except Exception as error:
        # logger.error('Cannot get email body: %s' % error)
        print('error retrieving email body: {}'.format(error))
コード例 #11
0
def email_to_text(email):
    html = None
    for part in email.walk():
        ctype = part.get_content_type()
        if not ctype in ("text/plain", "text/html")
            continue
        try:
            content = part.get_content()
        except: # w przypadku problemow z kodowaniem
            content = str(part.get_payload())
        if ctype == "tetx/plain":
            return content
        else:
            html = content

    if html:
        return html_to_text(html)
コード例 #12
0
def email_to_text(email):
    # check email and convert to text based on content type
    html = None
    for part in email.walk():
        ctype = part.get_content_type()
        if ctype not in ("text/plain", "text/html"):
            continue
        try:
            content = part.get_content()
        except:
            content = str(part.get_payload())
        if ctype == 'text/plain':
            return content
        else:
            html = content
    if html:
        return html_to_plain_text(html)
コード例 #13
0
def email_to_text(email):
    html = None
    for part in email.walk(
    ):  # EmailMessage.walk() go through this email's each payload (iterators in email)
        ctype = part.get_content_type()  # get type
        if not ctype in ("text/plain",
                         "text/html"):  # if not plain or html, ignore it
            continue
        try:
            content = part.get_content()
        except:  # in case of encoding issues
            content = str(part.get_payload())
        if ctype == "text/plain":
            return content
        else:
            html = content
    if html:
        return html_to_plain_text(html)  # return plain text finally
コード例 #14
0
def new_post(email):

	title = email['subject'].replace("Post: ", '')
	body = None
	if email.get_content_maintype() == 'multipart':
		for part in email.walk():
			if part.get_content_maintype() == 'multipart':
				pass
			elif part.get_content_maintype() == 'text':
				if body: continue
				body = part.get_payload(None, True)
			elif part.get_content_maintype() == 'image':
				filename = part.get_filename()
				with open(os.path.join('../content/images', filename), 'wb') as img:
					img.write(part.get_payload(decode=True))
				mdfilename = '![ ](images/%s)' % filename

	return update_pelican.post(title, body, mdfilename)
コード例 #15
0
import imaplib
import email

conn= imaplib.IMAP4_SSL('imap.googlemail.com')
conn.login('*****@*****.**', 'H@r335h9u')

conn.select()
typ, data = conn.search(None, 'SUBJECT', "Please Build Aerospike Server 3.3.19")

for num in data[0].split():
    typ, data = conn.fetch(num, '(RFC822)')
    #print('Message %s\n%s\n' % (num, data[0][1]))
    email = email.message_from_string(data[0][1])

    for part in email.walk():
        if part.get_content_type() == 'text/plain':
            message = part.get_payload(decode=True)
            temp = message.replace('^M', '')
            print temp

conn.close()
conn.logout()
コード例 #16
0
import imaplib
import email

conn = imaplib.IMAP4_SSL('imap.googlemail.com')
conn.login('*****@*****.**', 'H@r335h9u')

conn.select()
typ, data = conn.search(None, 'SUBJECT',
                        "Please Build Aerospike Server 3.3.19")

for num in data[0].split():
    typ, data = conn.fetch(num, '(RFC822)')
    #print('Message %s\n%s\n' % (num, data[0][1]))
    email = email.message_from_string(data[0][1])

    for part in email.walk():
        if part.get_content_type() == 'text/plain':
            message = part.get_payload(decode=True)
            temp = message.replace('^M', '')
            print temp

conn.close()
conn.logout()
コード例 #17
0
 def downloadAttachments(self, email):
     for part in email.walk():
         if self.isAttachment(part):
             self.saveFile(part.get_filename(),
                           part.get_payload(decode=True))
コード例 #18
0
ファイル: mailfetch.py プロジェクト: collexion/emailto3dprint
def poll(verbose = True):
    global mail_password
    if mail_password == None:
        mail_password = get_password()

    # Read program config file for common variable values
    try:
        mailfetch_config = config.read_config()
        servername = mailfetch_config["Mailfetch"]["server"]
        portnumber = mailfetch_config["Mailfetch"]["port"]
        username = mailfetch_config["Mailfetch"]["username"]
        mailbox = mailfetch_config["Mailfetch"]["mailbox"]
        savedir = mailfetch_config["Mailfetch"]["savedir"]
        allowedtypes = mailfetch_config["Mailfetch"]["extensions"]
    except:
        mlogger.log("Mailfetch configuration error")
        print("Exiting.")
        return -1

    # Try to open a connection to the email server.
    # Using a method from the socket library, I am temporarily
    # imposing a timeout restriction to keep the program from
    # hanging on an invalid mailserver name.
    # After the connection, timeout must be reset to NONE to
    # place the socket back in blocking mode.
    socket.setdefaulttimeout(10)
    try:
        connection = open_connection(servername,portnumber)
    except:
        mlogger.log("Mailfetch failed to open connection to",servername,":",portnumber)
        print("Exiting.")
        return -2
    socket.setdefaulttimeout(None)

    # If a socket is opened successfully, try to login to the server
    try:
        login(connection,username,mail_password,mailbox)
    except:
        mlogger.log("Mailfetch failed to login to",servername,":",portnumber)
        print("Exiting.")
        return -3

    # Populate a list with parsed email info
    infolist = []
    messagelist = get_message_list(connection)
    for message in messagelist:
        email = get_message_contents(connection,message)

        # If the email is not multipart, don't process further.
        # Only multipart messages have attachments.
        if email.get_content_maintype() != 'multipart':
            continue

        # Iterate over the parts of an individual message
        for part in email.walk():
            # An attachment itself is NOT multipart
            if part.get_content_maintype() == 'multipart':
                continue

            # A condition where no attachment is to be found
            if part.get('Content-Disposition') is None:
                continue

            # Only proceed if the attachment extension matches those allowed
            filename = part.get_filename()
            extension = filename[-4:-1]
            if extension not in allowedtypes:
                continue

            # If we make it this far, extract and save the attachment
            path = extract_attachment(part,savedir)
            
            # put all the information here
            sendaddr = get_sender_addr(connection,message)
            jobinfo = pipeline.PrintJob(path,sendaddr)
            infolist.append(jobinfo)

    # Close connections and return list of job request info
    connection.close()
    connection.logout()
    return infolist