zoukankan      html  css  js  c++  java
  • 为outlook增加“邮件召回”功能

    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

  • 相关阅读:
    cocosCreator-环境配置
    egret
    webpack升级4记录
    安装
    docker
    【转+综合其他】JavaScript在JSP页面加载与执行顺序
    JAVA基础之(十四)--“多线程”
    工具--idea的插件离线安装
    工具--eclipse中添加插件方法
    工具--在一台电脑中安装两个jdk版本
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3206679.html
Copyright © 2011-2022 走看看