python 快速和脏的脚本用于从Google Apps电子邮件下载最新的库存表并保存到服务器以进行进一步处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 快速和脏的脚本用于从Google Apps电子邮件下载最新的库存表并保存到服务器以进行进一步处理相关的知识,希望对你有一定的参考价值。

#!/usr/bin/env python

""" Quick & dirty script used for downloading latest stock sheet from
Google Apps Email and saving to server for further processing"""

import email
import imaplib
import os

save_dir = '.'
user = 'GMAILEMAIL'
pwd = 'GMAILPASSWORD'

def search_emails(imapsearch='(HEADER Subject "Stock Status")'):
    """
    Given an IMAP search string search the emails for the stock update email
    """
    m = imaplib.IMAP4_SSL("imap.gmail.com")
    m.login(user,pwd)
    m.select()

    resp, items = m.search(None, imapsearch)
    items = items[0].split()
    items.reverse()
    items = items[:1]
    return items

def wipe_existing(save_dir, extension):
    files = os.listdir(save_dir)

    for f in files:
        if os.path.splitext(f)[1] == ('.%s' % extension):
            print("Removing: %s" % f)
            os.remove(f)

def main(save_dir, user, pwd):
    wipe_existing(save_dir, 'xlsx')
    items = search_emails()

    for emailid in items:
        resp, data = m.fetch(emailid, "(RFC822)")
        email_body = data[0][1] # getting the mail content
        mail = email.message_from_string(email_body) # parsing the mail content to get a mail object

    #Check if any attachments at all
        if mail.get_content_maintype() != 'multipart':
            print 'No attachment'
            continue

    print "[%s]: %s" % (mail["From"], mail["Subject"])

    for part in mail.walk():
    # multipart are just containers, so we skip them
        if part.get_content_maintype() == 'multipart':
            continue

    # is this part an attachment ?
        if part.get('Content-Disposition') is None:
            continue

    filename = part.get_filename()
    att_path = os.path.join(detach_dir, filename)

    #Check if its already there
    if not os.path.isfile(att_path) :
        fp = open(att_path, 'wb')
        fp.write(part.get_payload(decode=True))
        fp.close()

if __name__ == "__main__":
    main(save_dir, user, pwd)

以上是关于python 快速和脏的脚本用于从Google Apps电子邮件下载最新的库存表并保存到服务器以进行进一步处理的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 快速和脏的表单验证器

sh 一次性快速和脏的rsyncd服务器

golang 非常快速和脏的stackoverflow作业使用Go进行解析

python 一些快速脏的示例代码和操作ARP数据包的函数(用于网络过滤器测试)。

python 通过Cloudera Manager API转储集群/服务/角色配置的快速而脏的脚本http://cloudera.github.io/cm_api/。

python 用于直接从Google Chrome网上应用店下载Chrome扩展程序(CRX)文件的Python脚本。