2009-09-17 35 views
1

我想攔截一些自動電子郵件並將其轉換爲更易讀的格式。我相信這可以使用VBA,但我更願意用Python操作文本。我可以創建一個Ironpython客戶端腳本來預處理某些電子郵件嗎?編輯: 我相信這可以用Outlook規則來完成。在Outlook 2007中,你可以這樣做: 工具 - >規則 - >新建規則使用ironpython可能攔截和重寫Outlook客戶端的電子郵件?

「檢查郵件到達時」

下一個

[過濾電子郵件要處理哪些]

下一個

「運行腳本」

在「運行腳本」中,它允許您使用VBA腳本。

+0

您可以參考VBA中的可能性嗎? – 2009-09-17 17:35:17

+0

這個想法聽起來很可怕 – Zoidberg 2009-09-17 17:48:01

+1

當你在公司環境中,並且你不能改變實際上包含一些善良的醜陋電子郵件的格式時,有時你必須解決系統問題。這就是人生。 – 2009-09-17 20:43:21

回答

2

我只能給你一個指針。幾年前,我在Outlook中使用了貝葉斯垃圾郵件過濾器。它是用Python編寫的,提供了一個Outlook插件來過濾收到的郵件。該軟件的名稱是SpamBayes,該項目仍在線。由於它是開源的,您可能會找到所有必要的信息,如何將郵件過濾器插入到Outlook中。這應該給你足夠的背景來添加實際上能夠轉換郵件內容的代碼。我的理解是它是用香草Python(CPython)編寫的,但如果你對IronPython更加熟悉,則不應該很難翻譯。搏一搏。

+0

謝謝!我從來沒有用過Ironpython,我只是假設你需要與Outlook進行交互。我通常使用CPython。 – 2009-09-17 21:03:15

+0

@Ross與此同時,我已經讀過,歷史悠久的Mark Hammond一直在這個項目上,特別是插件,所以可能會有相當多的win32 cool :-)。 Mark負責(C)Python與Windows的良好集成。 – ThomasH 2009-09-17 21:28:08

1

這是一項正在進行的工作,但我已經想通了與其他職位的幫助部分答案。以下是通過運行腳本來重寫指定電子郵件的說明。我使用的是Outlook 2007中

  1. 下載並安裝pywin32

  2. 下載並安裝ExchangeCdo.exe

  3. 將這個代碼在一個文件中,並從cmd運行:

import os, sys, re 
import win32com.client 
session = win32com.client.gencache.EnsureDispatch("MAPI.session") 
win32com.client.gencache.EnsureDispatch("Outlook.Application") 
outlook = win32com.client.Dispatch("Outlook.Application") 
#print '\n'.join(dir(outlook)) 
mapi = outlook.GetNamespace('MAPI') 
inbox = mapi.GetDefaultFolder(win32com.client.constants.olFolderInbox) 
items = inbox.Items 
#items.Restrict("[Unread] = true") 
#print '\n'.join(dir(items)) 
while True: 
    item = items.GetNext() 
    if item == None: break 
    #print '\n'.join(dir(item)) 
    if re.compile(r'crazy email').search(item.Subject): 
     print item.Subject 
     print item.Body 
     # works VVVV 
     item.Body = 'whoya!' 
     item.Save() 
     break 
+0

+1工作很好,羅斯。 – ThomasH 2010-01-05 22:50:52

相關問題