能否使用IronPython在Outlook客户端拦截并重写邮件?
我想要拦截并把一些自动发送的邮件变得更容易阅读。我觉得用VBA可以做到,但我更想用Python来处理这些文本。我可以创建一个IronPython的客户端脚本来预处理某些邮件吗?
编辑:
我觉得可以通过Outlook的规则来实现。在Outlook 2007中,你可以这样操作:
工具 -> 规则 -> 新建规则
“当邮件到达时检查消息”
接下来
[选择要处理的邮件]
接下来
“运行一个脚本”
在“运行一个脚本”中,你可以使用VBA脚本。
4 个回答
这还在进行中,但在其他帖子帮助下,我已经找到了部分答案。下面是通过运行脚本来重写指定邮件的步骤。我使用的是Outlook 2007。
下载并安装 pywin32
下载并安装 ExchangeCdo.exe
把这段代码放到一个文件里,然后从
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
我只能给你一些建议。很多年前,我在Outlook上使用过一个贝叶斯垃圾邮件过滤器。这个过滤器是用Python写的,它提供了一个Outlook的插件,可以过滤进来的邮件。这个软件叫做SpamBayes,这个项目现在仍然在线。因为它是开源的,你应该能找到所有必要的信息,教你怎么把邮件过滤器接入Outlook。这些信息应该能帮助你了解如何添加代码,真正改变邮件内容。我的理解是它是用普通的Python(CPython)写的,但如果你更习惯用IronPython,转换起来应该也不难。试试看吧。
你可以在这里查看 Outlook 对象模型的相关信息:http://msdn.microsoft.com/en-us/library/ms268893.aspx
要通过 COM 连接到 Outlook,你需要用到 pywin32 这个工具。
我知道的没有专门针对 Python 的参考资料,但你可以参考一些示例脚本,然后把它们“翻译”成 Python 代码。一开始可能会觉得有点难,但一旦你理解了这些对象及其在 Python 中的用法,就会简单多了。
看起来你想要了解的是: