Outlook 规则将电子邮件保存为文本

Posted

技术标签:

【中文标题】Outlook 规则将电子邮件保存为文本【英文标题】:Outlook Rule Save email to text 【发布时间】:2015-02-18 13:39:42 【问题描述】:

我在使用脚本自动将电子邮件正文导出到文本文件时遇到问题。 我管理了一个脚本,它将文本保存到宏上的文件中,但这不适用于我需要的规则。

我目前的代码如下:

Sub SaveAsTXT()
 Dim myItem As Outlook.Inspector
 Dim objItem As Object
 Dim myFolder As Folder



 Set myItem = Application.ActiveInspector
 If Not TypeName(myItem) = "Nothing" Then

        Set myNamespace = Application.GetNamespace("MAPI")
        Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox)

 Set objItem = myItem.CurrentItem
 strname = objItem.Subject
 strdate = Format(objItem.ReceivedTime, " yyyy mm dd")
 objItem.SaveAs "c:\users\philip\documents\" & strname & strdate & ".txt", olTXT
    End If

End Sub

抱歉,如果它看起来有点乱,我已经编辑了无数次试图让它工作。

当我在打开的电子邮件中并将其作为宏运行时,该代码将正确运行,但在作为规则运行时将无法正常运行 我尝试修改为Sub SaveAsTXT(Item as Outlook.Mailitem),但这似乎也不起作用

所以基本上问题是我如何确保代码在按规则运行时选择电子邮件(始终标题为“Rotas”,不带引号)?

信息:使用 office 2010,我不是一个很好的编码器。

【问题讨论】:

【参考方案1】:

其实我自己解决了。

我不认为item as Outlook.Mailitem 元素实际上是规则选择的东西。所以我应用item作为对象而不是objItem

在下面找到成功(和清理过的)代码:

Sub SaveAsTXT(myMail As Outlook.MailItem)

 Dim objItem As Object
 Dim myFolder As Folder


 If Not TypeName(myitem) = "Nothing" Then

        If myMail.Subject = "Rotas" Then

 strname = myMail.Subject
 strdate = Format(myMail.ReceivedTime, " yyyy mm dd")
 myMail.SaveAs "c:\users\philip\documents\" & strname & ".txt", olTXT
    End If


 End If

End Sub

【讨论】:

干得好,整理好自己+1。您也可以接受自己的答案或等待另一种方法来获得您想要的。见accepting answers。 感谢您发布此信息。经过一些小的修改,它也对我有用。 您是否注意到您没有使用您在此处分配的 strdate?

以上是关于Outlook 规则将电子邮件保存为文本的主要内容,如果未能解决你的问题,请参考以下文章

基于日期保存附件的 Outlook 规则脚本

怎样在outlook中设置自动回复

Outlook2010 没有Exchange Server,怎么自动回复邮件?

通过编程为Outlook 2007添加邮件规则

Outlook - 从带有 .xls 附件的电子邮件和特定发件人中保存文件,然后将电子邮件移动到子文件夹

outlook寻找/删除指定日期范围内的邮件