2009-09-17 82 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

相关问题