⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 set_read_flag.py

📁 用python实现的邮件过滤器
💻 PY
字号:
from __future__ import generators# Set items to read/unreadimport pythoncomimport os, sysfrom win32com.mapi import mapi, mapiutilfrom win32com.mapi.mapitags import *MSGFLAG_READ = 0x1CLEAR_READ_FLAG = 0x00000004CLEAR_RN_PENDING = 0x00000020CLEAR_NRN_PENDING = 0x00000040SUPPRESS_RECEIPT = 0x1import mapi_driverdef SetReadState(driver, mapi_folder, subject, unread):    hr, data = mapi_folder.GetProps( (PR_DISPLAY_NAME_A,), 0)    name = data[0][1]    num = 0    for item in driver.GetItemsWithValue(mapi_folder, PR_SUBJECT_A, subject):        flags_base = mapi.MAPI_DEFERRED_ERRORS | SUPPRESS_RECEIPT        if unread:            item.SetReadFlag(mapi.MAPI_DEFERRED_ERRORS|CLEAR_READ_FLAG)        else:            item.SetReadFlag(flags_base)        num += 1        # Check the set worked.        hr, props = item.GetProps((PR_MESSAGE_FLAGS,), 0)        ((tag, val), ) = props        if val & MSGFLAG_READ == unread:            print "MAPI SetReadState appears to have failed to change the message state"            print "Requested set to unread=%s but the MAPI field after was %r" % \                    (unread, val)    print "Processed", num, "items"def usage(driver):    folder_doc = driver.GetFolderNameDoc()    msg = """\Usage: %s [-u] subject of the message-f - Search for the message in the specified folder (default = Inbox)-u - Mark as unreadMarks as read (or unread) all messages that match the subject.  Subjectmatching is substring and ignore-case.%sUse the -n option to see all top-level folder names from all stores.""" \    % (os.path.basename(sys.argv[0]),folder_doc)    print msgdef main():    driver = mapi_driver.MAPIDriver()    import getopt    try:        opts, args = getopt.getopt(sys.argv[1:], "u")    except getopt.error, e:        print e        print        usage(driver)        sys.exit(1)    folder_name = ""    unread = False    for opt, opt_val in opts:        if opt == "-u":            unread = True        else:            print "Invalid arg"            return    if not folder_name:        folder_name = "Inbox" # Assume this exists!    subject = " ".join(args)    if not subject:        print "You must specify a subject"        print        usage(driver)        sys.exit(1)    try:        folder = driver.FindFolder(folder_name)    except ValueError, details:        print details        sys.exit(1)    SetReadState(driver, folder, subject, unread)if __name__=='__main__':    main()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -