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

为outlook增加“邮件召回”功能的更多相关文章

  1. seafile增加邮件服务功能

    这个很简单哈,直接上配置.此处我用的163邮箱 vim /opt/seafile/conf/seahub_settings.py ### 163邮箱配置测试 ### EMAIL_USE_SSL = F ...

  2. 如何设置outlook实现自动秘密抄送邮件的功能?

    很多朋友会发现虽然在家里同步了公司的邮箱可以正常收发邮件,可是每当使用家里的outlook发送相关邮件的时候,在公司的邮箱里找不到相关的发件记录,只能同步收件箱,而不能同步发件箱应该是比较让人困扰的问 ...

  3. django 增加验证邮箱功能

    在user文件夹下新建python包,utils 在包内新建文件email_send.py,其中包括验证字符串随机码的产生,数据库的存储和email的发送 # -*- coding: utf-8 -* ...

  4. .NET开发邮件发送功能的全面教程(含邮件组件源码)

    今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         ...

  5. discuz3.2x增加邮箱验证功能

    为防止垃圾用户多次注册,为disczu增加邮箱验证功能. 大致分为二步: 1.申请邮箱,这里推荐使用腾讯免费企业邮箱:https://exmail.qq.com/portal/introducefre ...

  6. - C#编程大幅提高OUTLOOK的邮件搜索能力!

    原文:[原创] - C#编程大幅提高OUTLOOK的邮件搜索能力! 使用OUTLOOK, 你有没有遇到过上图的问题? 多达18419封邮件! 太多了, 每次想找一个邮件都非常耗时, 想办法解决这个问题 ...

  7. .NET开发邮件发送功能

    .NET开发邮件发送功能 今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知 ...

  8. PyQt5实现邮件合并功能(GUI)

    1. 实战Word批量 需要处理批量替换word的一些数据,数据源从Excel中来. Excel的百分数会变为数字,以及浮点数会多好多精度,为了原汁原味的数据,直接复制数据到文本文件.通过\t来分隔即 ...

  9. EWS Managed API 2.0 设置获取邮件自动回复功能

    摘要 最近要在邮件提醒功能中添加,自动回复的功能.在移动端获取用户在outlook上是否开启了自动回复功能,如果用户在outlook上开启了自动回复功能, 获取用户自动回复的内容,如果没有开启,用户可 ...

随机推荐

  1. style中position的属性值具体解释

    Position的英文原意是指位置.职位.状态.也有安置的意思.在CSS布局中,Position发挥着非常关键的数据,非常多容器的定位是用Position来完毕. Position属性有四个可选值,它 ...

  2. MVC应用程序使用Web Services(asmx)

    原文:MVC应用程序使用Web Services(asmx) 这次,我们练习MVC应用程序中,应用web service.先在MVC应用程序中创建一个目录Services,将用来存储Service.a ...

  3. 移动客户端与服务端Session那点秘密

    众所周知,做过Web开发的小伙伴可能知道,在浏览器向服务器发一个请求,服务器端会为当前的访问者创建一个session会话,随着浏览器的关闭而会话结束.但是移动客户端咋整呢(IOS/Android啥的) ...

  4. POJ 3067 Japan 树状数组求逆序对

    题目大意:有两排城市,这两排城市之间有一些路相互连接着,求有多少条路相互交叉. 思路:把全部的路先依照x值从小到大排序,x值同样的依照y值从小到大排序,然后插入边的时候,先找有多少比自己y值小的,这些 ...

  5. Android-Universal-Image-Loader学习笔记(两)--LruDiscCache

    最近最少使用缓存官员最近(LruDiscCache)之前,引入一个概念,一个重要的三个班: key:这是DiscCacheAware接口save里面的方法imageUri通过调用参数FileNameG ...

  6. DB2建表语句

    db2 => create table test (name char(8) not null primary key,depid smallint,pay bigint) DB20000I S ...

  7. HDU 1256 图片8

    图片8 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  8. leetcode第24题--Reverse Nodes in k-Group

    problem: Given a linked list, reverse the nodes of a linked list k at a time and return its modified ...

  9. AjaxPro使用说明文档

    ajaxpro下载地址 AjaxPro使用说明     1 目录     2 修改历史纪录     3 1.什么是Ajax     4 2.为什么使用Ajax     4 3.Ajax应用场景     ...

  10. Asp.Net MVC页面静态化功能实现一:利用IHttpModule和ResultFilter

    由于公司现在所采用的是一套CMS内容管理系统的框架,所以最近项目中有一个需求提到要求实现页面静态化的功能.在网上查询了一些资料和文献,最后采用的是小尾鱼的池塘提供的 利用ResultFilter实现a ...