- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试自动关闭 Outlook 检查器窗口,该窗口在单击链接有 Javascript mailto:
调用(已注入(inject))的按钮后自动打开。我以为我使用了正确的 Outlook 事件,但也许不是。我当前正在做的是订阅 Inspectors_NewInspector
和 Inspector_Activate
事件,以便检测窗口何时打开/变得可见,然后我尝试从内部关闭它Inspector_Activate
事件。我需要电子邮件的唯一原因是为了触发其他 VBA 代码在单击 Web 浏览器中的特定按钮时执行,以及阅读电子邮件的主题。由于似乎没有直接的方法可以通过 Javascript 控制 Outlook,而无需使用 Internet Explorer(我使用的是 Chrome)或 Microsoft Office API,因此我得出的结论是,这是最好的方法我去吧。
我当前的问题:
我可以从新的电子邮件/检查器窗口读取数据,但无法始终使窗口自动关闭。它只会间歇性地自动关闭。其他时候,我会看到卡住的检查器窗口,只能通过单击窗口的红色 X 来关闭。窗口中甚至没有其他内容可点击。
我尝试过的:
我尝试在整个代码的不同位置发出关闭窗口的调用;有些人犯了错误,有些人什么也没做。我在整个代码的不同位置尝试了 putt DoEvents 循环;所有这些都在等待不同的东西加载,但它们要么没有效果,要么陷入无限循环。我什至无法告诉你有多少次我在尝试解决此问题时导致 Outlook 崩溃。更重要的是,在尝试调试问题时,我收到的成功案例和不成功案例的读数相同。下面的第一部分是成功执行,其中代码自动关闭窗口,第二部分是代码完成后窗口仍然打开。
立即窗口中的输出:
m_Inspectors_NewInspector Event: 1
Beginning m_Inspectors_Activate Event: 1
Closing
Should be closed
End m_Inspectors_Activate Event: 0
------------------------------------------------------
m_Inspectors_NewInspector Event: 1
Beginning m_Inspectors_Activate Event: 1
Closing
Should be closed
End m_Inspectors_Activate Event: 0
------------------------------------------------------
我目前拥有的:
下面是我在 ThisOutlookSession
中的代码:
Private WithEvents m_Inspectors As Inspectors
Private WithEvents m_Inspector As Inspector
Private WithEvents Mail As MailItem
Public Sub Initialize_handler()
Set m_Inspectors = Application.Inspectors
End Sub
Private Sub m_Inspectors_NewInspector(ByVal Inspector As Inspector)
If TypeOf Inspector.CurrentItem Is Outlook.MailItem Then
'Handle emails only
Set m_Inspector = Inspector
Debug.Print "m_Inspectors_NewInspector Event: " & m_Inspectors.Count
End If
End Sub
Private Sub m_Inspector_Activate()
Debug.Print "Beginning m_Inspectors_Activate Event: " & m_Inspectors.Count
Dim Mail As Object
DoEvents
Set Mail = m_Inspector.CurrentItem
If Mail Is Nothing Then Debug.Print "Mail is Nothing": Exit Sub
If Mail.To = "velo@automated.com" Then
Dim clipB As String, DataObj As MsForms.DataObject
Select Case Mail.Subject
Case "Import", "Export"
Set DataObj = New MsForms.DataObject
DataObj.GetFromClipboard
clipB = DataObj.GetText(1)
'MsgBox (IIf(Mail.Subject = "Import", "Import for ", "Export for ") & clipB)
Mail.Close olDiscard
Set Mail = Nothing
'Set m_Inspector = Nothing
Case Else
MsgBox ("Hmm")
Exit Sub
End Select
End If
Debug.Print "End m_Inspectors_Activate Event: " & m_Inspectors.Count
Debug.Print "------------------------------------------------------"
Set m_Inspector = Nothing
End Sub
Private Sub Mail_Close(Cancel As Boolean)
Cancel = False
End Sub
Private Sub m_Inspector_Close()
'MsgBox ("Close!")
Debug.Print "Closing"
'Set m_Inspector = Nothing
Debug.Print "Should be closed"
End Sub
为了完整起见,以下是我注入(inject)的 Javascript 代码的相关部分:
$(document).on('click', 'button.btn-large:nth-child(3)', function(){
var fullsupplier;
fullsupplier = document.getElementById("asinum").innerHTML + " " + document.getElementById("supplierName").innerHTML;
//alert(fullsupplier);
copyTextToClipboard(fullsupplier);
window.location.href = "mailto:velo@automated.com?subject=Import";
});
$(document).on('click', 'button.btn-large:nth-child(1)', function(){
var fullsupplier;
fullsupplier = document.getElementById("asinum").innerHTML + " " + document.getElementById("supplierName").innerHTML;
//alert(fullsupplier);
copyTextToClipboard(fullsupplier);
window.location.href = "mailto:velo@automated.com?subject=Export";
});
我的问题:
我做错了什么?如何使检查器窗口始终自动关闭而不是间歇性关闭?
最佳答案
问题是从外部进程(例如mailto:链接、从Word 发送等)创建的电子邮件不会触发NewInspector 事件。您必须使用计时器来检测 Inspectors.Count 何时发生变化,并在新添加的 Inspector 中设置一个 Hook 。然后你就可以捕获它的事件。
关于javascript - 通过网页上的 Javascript Mailto 代码触发时,Outlook 检查器窗口不会始终自动关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37707663/
以下 Outlook 的命令适用于 Outlook 2010: outlook.exe /c ipm.note /m "&subject=abc" /a "c:\attach.txt" 但它不适用于
我有 2 个电子邮件帐户,一个是 Gmail,另一个是 Outlook。我想在邮件到达时自动将进入 Outlook 的邮件接收到 Gmail。我该怎么做?Outlook 是否存在任何可能阻碍此操作的安
Outlook 加载项如何在邮件上设置 MAPI 属性(例如正文内容),但仅将其保存在本地缓存中(而不发送回 Exchange 服务器)?我见过使用一些加密插件来完成此操作。 我愿意使用几乎任何可以实
有什么方法可以在 Outlook 的模板主题或正文中插入今天的日期吗?这样,每当我打开保存的模板时,今天的日期就会自动显示在主题和正文中。 有什么内置功能吗?像 Date() 这样的东西? 最佳答案
我有一个时事通讯系统,可以跟踪阅读它的人。尽管此功能仅在允许下载图像的情况下才有效。但这不是我现在的问题。 我的问题是,当我在 Outlook (2010) 中打开新闻稿并授予下载图像的权限时,我的系
我需要从 Outlook msg 文件中读取内容。目前我正在使用来自 CodeProject.com 的类(class)项目来实现这一点,因为在服务器上部署 VSTO 和 Outlook 不是一种选择
我正在开发可与共享邮箱一起使用的 Outlook 加载项。目前,office 插件在委托(delegate)场景中不可用,但 MS 已经发布了支持这些场景的预览版本。https://learn.mic
我正在开发可与共享邮箱一起使用的 Outlook 加载项。目前,office 插件在委托(delegate)场景中不可用,但 MS 已经发布了支持这些场景的预览版本。https://learn.mic
我开发了一个运行良好的 Outlook Web 插件。它是一个任务 Pane ,可在约会的组合模式下使用,它收集事件数据、添加一些数据并将其发送到某个地方的 API。 我现在想做的是将经过身份验证的用
在 Outlook for Mac 中,office.js Outlook 加载项在我假设是 Safari Web 控件的任务 Pane 中运行。我无法确定您如何从任务 Pane 中运行的加载项中清除
Marshal.GetActiveObject("Outlook.Application") 在 Outlook 启动并继续运行时抛出 操作不可用(HRESULT 异常:0x800401E3 (MK_
我有一个 VSTO Outlook 2007 加载项。我必须检查 Outlook 是否与交换服务器脱机/联机。我正在使用如下代码: NameSpace ns = Application.GetNam
我正在尝试在图像上方添加文本,如下所示。它适用于除 Outlook 2010、Outlook 2007、Outlook 2013 之外的所有电子邮件客户端。所有这三个客户端都忽略了填充。我到处都试过了
有没有办法处理 Outlook 邮件项中收件人的悬停事件?我想在悬停时显示一个弹出窗口,其中包含有关收件人的一些信息,并想知道是否可以通过 Outlook 加载项实现。 最佳答案 因为 Inspect
我正在尝试在 Outlook 2007 中创建、更新和删除事件(但最好它适用于所有版本)。创建和删除事件工作正常。我关注了 several threads但由于某种原因更新操作失败。 当我双击 ICS
我在 ms Outlook 中有 2 个帐户('user1@test.com' - 默认配置文件,'user2@test.com'),我正在尝试使用非默认帐户通过 python 发送消息。这是我的代码
我有一个我最近继承的Outlook 2007加载项,目前在生产中存在一个问题,有些用户正在周期性地,似乎是随机地禁用其加载项。外接程序中没有日志,并且在外接程序代码中的每个方法/事件调用周围都存在tr
是否可以为 创建 HTML 电子邮件签名? 2003年展望或以上不引用外部图像? 也就是说,使用那些特殊的“cid”引用,但将图像本身嵌入到签名中,而不是嵌入到文件系统或网络中。 这适用于根据用户的各
似乎没有太多信息或任何好的代码示例用于以编程方式设置 Outlook 2007 MailItem 的类别。 MSDN has a limited page ,并提到使用 VB 的 拆分 功能,或多或少
Outlook 2007 在 Outlook 中撰写新邮件时,可以创建指向其他邮件的链接吗? Whww 我正在撰写一封新邮件,我想创建一个指向已发送项目的链接,单击此链接应该会打开邮件。 这能做到吗?
我是一名优秀的程序员,十分优秀!