1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 在Outlook中用VBA导出HTML格式邮件

在Outlook中用VBA导出HTML格式邮件

时间:2022-02-01 20:27:35

相关推荐

在Outlook中用VBA导出HTML格式邮件

我每天所收到的e-mail中,订阅的电子杂志占了很大的比例。其中既有新闻也有电脑技术或娱乐性文章,加在一起竟有上百封。后来我知道单位里许多人同我一样也喜欢看,而且有的人还订了同样的杂志,所以我就每天收到邮件后把它们整理到局域网上去。只是这么多的邮件,整理起来工作量可不小,怎么解决一下呢?

这些邮件通常都是HTML格式的,用Outlook通常的方法不能正确的导出,而且分布在许多下层子夹中,导出很麻烦。我在OUTLOOK中,用VBA实现了HTML邮件导出并自动发布到网络上。

要对邮件箱里的邮件进行操作,首先要取得Outlook MAPI名字空间。可以使用下面的语句:

Dim mobjOutlook As Outlook.NameSpace

Dim objOutlook As New Outlook.Application

mobjOutlook=objoutlook.GetNameSpace(“MAPI”)

用mobjOutlook的GetDefaultFolder方法。可以取得收件箱的MAPIFolder对象:

Dim objFolder As Outlook.MAPIFolder

ObjFolder=mobjOutlook.GetDefaultFolder(6)

其中参数6代表收件箱,其他参数的意义如下表:

在objFolder的属性包含邮件项集合即ITEMS,也包含所有下一级子夹的集合Folders。

对每一个邮件,首先取得邮件的接收时间,如果是当天收到的就创建并打开一个HTML文件,以其主题Subject为文件名,把它的HTML格式的内容,即HTMLBody属性的值写入这个文件,然后关闭并处理下一个。

对下一级子夹,用递归调用的方式,可以遍历收件箱中每一层夹中的所有邮件。在生成邮件文件时,还同时生成索引文件。

完整的程序如下:

Private mobjOutlook As Outlook.NameSpace

Private fs, fo

Private Sub GetOutlook()

Dim objOutlook As New Outlook.Application

Set mobjOutlook = objOutlook.GetNamespace("MAPI")

End Sub

Sub ListMailFolders(objFolder As Outlook.MAPIFolder)

Dim objItem As Object

Dim f

Dim str1, str2, str3 As String

For Each objItem In objFolder.Items

If (FormatDateTime(objItem.ReceivedTime, vbShortDate) = FormatDateTime(Date, vbShortDate)) Then

str2 = objItem.Subject

str1 = "j:wwwrootnews" + str2 + ".htm"

Set f = fs.OpenTextFile(str1, 2, True, TristateFalse)

f.Write objItem.HTMLBody

f.Close

str3 = "< p>< a href='" + objItem.Subject + ".htm'>" + objItem.Subject + "< /a>< /p> "

fo.Write str3

End If

Next

Dim objf As Outlook.MAPIFolder

For Each objf In objFolder.Folders

ListMailFolders objf

Next

Set objItem = Nothing

End Sub

Sub ListMailItems(longFolder As Long)

Dim objFolder As Outlook.MAPIFolder

Dim f

If mobjOutlook Is Nothing Then

GetOutlook

End IF

Set objFolder = mobjOutlook.GetDefaultFolder(longFolder)

ListMailFolders objFolder

End Sub

Private Sub storemail()

Set fs=CreateObject(“Scripting.FileSystemObject”)

Set fo=fs.OpenTextFile(“j:wwwrootnewsindex.html”,2,True,TristateFalse)

fo.Write “< HTML>< HEAD>< META content=’text/html; charset=gb2312’ http-equiv=Content-Type> < TITLE>< /TITLE>< /HEAD>< BODY>

ListMailItems(6)

fo.Write “< /BODY>< /HTML>”

fo.Close

End Sub

在Outlook2000中创建一个新的宏,用VB编辑器编辑它,把上面的程序拷贝到同一模块,注意把生成文件的目录名改为自己WEB服务器上的WWW服务根文件夹名。在宏中调用storemail,执行宏,就可以导出当天收到的所有邮件。

所有指向这些HTML文件的链接放在同一目录下的index.html中,这样每个人都可以在网上浏览这些文章了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。