博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为outlook增加“邮件召回”功能
阅读量:7085 次
发布时间:2019-06-28

本文共 2125 字,大约阅读时间需要 7 分钟。

outlook 2007开始软件自带邮件召回功能。2003版本没有,可惜此版本盗版最厉害,用户很广,这次项目中用户分布很广,其中outlook2003版本用户数甚多,达到397人。

不可能让他们新装2007/2010等,因此使用outlook2003“工具”菜单中的VBA宏编辑器进行开发
邮件召回的前提:
1、必须是exchange邮件
2、收件人必须是outlook客户端,OWA不支持
3、收件人必须未读邮件
Private WithEvents vsoCommbandButton As CommandBarButton
Private WithEvents vsoCommbandRecallMessage As CommandBarButton
Dim item As Object
Private Sub Application_Startup()
Call addTotalButton
End Sub
'增加工具栏
Sub addTotalButton()
On Error Resume Next
Dim vsoCommandBar As CommandBar
'得到要添加的工具栏
Set vsoCommandBar = Outlook.ActiveExplorer.CommandBars("ExcelClub")
'如果工具栏为空,则增加
If (vsoCommandBar Is Nothing) Then
Set vsoCommandBar = Outlook.ActiveExplorer.CommandBars.add("ExcelClub", msoBarTop)
'在工具栏上增加一个按钮
Set vsoCommbandRecallMessage = vsoCommandBar.Controls.add(1)
vsoCommbandRecallMessage.Caption = "RecallMail"
vsoCommbandRecallMessage.FaceId = 72
vsoCommbandRecallMessage.Style = msoButtonIconAndCaption
 '显示增加的工具栏
vsoCommandBar.Visible = True
Else
Set vsoCommbandRecallMessage = vsoCommandBar.Controls(1)
End If
End Sub
'增加的按钮(RecallMail)的执行
Private Sub vsoCommbandRecallMessage_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
'出现错误时下一句代码继续运行
On Error Resume Next
Dim objNS As Outlook.NameSpace
Dim myItem As Outlook.mailItem, objSendFolder As Outlook.MAPIFolder
Dim objItems    As Outlook.Items
Dim tmpItem As Object
Set objNS = Application.GetNamespace("MAPI")
Set objSendFolder = objNS.GetDefaultFolder(olFolderSentMail)
Set objItems = objSendFolder.Items
objItems.Sort "[SentOn]", True
Set tmpItem = objItems.GetFirst
Do While TypeName(tmpItem) <> "Nothing"
        If TypeName(tmpItem) = "MailItem" Then
        Set myItem = tmpItem
        Exit Do
        End If
    Set tmpItem = objItems.GetNext
Loop
Set item = myItem
item.Display
Call ShowAttachmentDialog
myItem.Close olDiscard
End Sub
 Sub ShowAttachmentDialog()
    Dim objInsp
    Dim colCB
    Dim objCBB
    On Error Resume Next
    Set objInsp = item.GetInspector
    Set colCB = objInsp.CommandBars
    Set objCBB = colCB.FindControl(, 2511)
    If Not objCBB Is Nothing Then
        SendKeys "{ENTER}", wait
        objCBB.Execute
    End If
    Set objCBB = Nothing
    Set colCB = Nothing
    Set objInsp = Nothing
End Sub

转载地址:http://crrml.baihongyu.com/

你可能感兴趣的文章
算法-javascript自实现继承extend(单次继承原型对象和单次继承构造函数)
查看>>
Linux 学习树之基础20160212
查看>>
CCNA实验复习一,时钟和封装
查看>>
亲爱的,开始新的习惯吧
查看>>
CentOS6.4下安装MySQL5.6.10后root无法登陆MySQL
查看>>
扩展集(用于egrep和grep-E)
查看>>
mysql sql语句大全
查看>>
《Java从小白到大牛精简版》之第2章 开发环境搭建
查看>>
主机安全(1)iptables介绍
查看>>
Android学习——使用videoView 来播放视频
查看>>
dump_array 将数组内容格式化输出
查看>>
Xenserver 虚机模板制作
查看>>
XenDesktop5.5部署(一)---Image镜像制作
查看>>
nginx+uwsgi部署django项目
查看>>
CSS 盒模型
查看>>
给screen发送一个命令运行,并保持screen不退出。
查看>>
dnsmasq配置
查看>>
玩转linux 第五天之正则表达式
查看>>
测试用例编写规范
查看>>
Linux vsftpd服务器
查看>>