【发布时间】:2013-08-23 23:51:08
【问题描述】:
我通过 excel 中的 Outlook 自动化发送电子邮件,并设法使用 sendkeys 绕过关于病毒的烦人警告消息(在调用 sendkeys 之前激活检查器)。
现在我有时会收到一条关于允许访问联系人的消息。 我有收件人的电子邮件地址,不需要访问联系人,但 Outlook 自动解析会启动,然后会弹出一个允许访问联系人的弹出窗口。这没有 5 秒的延迟,但仍会阻止系统完全自动化。 我正在尝试避免使用诸如兑换之类的第 3 方工具,我想知道是否有人找到了关闭自动解析的方法。
我在其他网站上阅读过建议关闭自动完成和自动名称检查的帖子,但 Outlook 在发送邮件时仍会尝试解析地址。
我们很乐意收到任何指示。
24/08/13 编辑
我听说如果您使用 Outlook 2007 及更高版本并且正确安装了带有 Microsoft 批准的病毒扫描程序的系统,您将不会看到该消息,但我无法控制用户计算机上程序的安装。
我试过的代码包括
Function Mailit(byval sMessageTo as String, byval sSamplerCenter as String, byval sFileSpec as String)
Dim olApp As outlook.Application
Dim objMail As Outlook.MailItem
Dim blnOLOpen As Boolean
On Error Resume Next
Set olApp = GetObject(, "Outlook.Application")
blnOLOpen = True
On Error Goto 0
If olApp Is Nothing Then
Set olApp = CreateObject("Outlook.Application")
blnOLOpen = False
End If
Set objMail = olApp.CreateItem(olMailItem)
With objMail
.To = sMessageTo
.Subject = sSampleCenter
.Attachments.Add sFileSpec
.Send
End With
这会导致有关病毒的警告消息,并导致用户等待 5 秒才能选择发送邮件。我使用的 sendkeys 方法与 With objMail 相同,但随后执行以下操作:
Dim myInspector As Outlook.Inspector
With objMail
.To = MessageTo
.Subject = SampleCenter
.Attachments.Add FileSpec
.Display
End With
Set myInspector = objMail.GetInspector
myInspector.Activate
SendKeys "%s", True
我还有一些代码用于检查已发送文件夹中的项目数量是否增加,如果没有,则等待/调用检查器和 sendkeys 函数。 这种方法不会导致警告,但通常会导致一个对话框询问用户是否希望允许访问他们的联系人。
【问题讨论】:
-
您是否使用 VBA 代码来实际创建/发送电子邮件?或者您是否使用 sendkeys 导致整个过程发生?我已经发送了很多电子邮件(使用纯 VBA 代码)并且从未遇到过这些问题。
-
我想我无能为力,但这里有几个想法。如果您
Save电子邮件并稍后发送会怎样?使用ResolveAll有帮助吗?另外,作为旁注,我认为您不需要使用GetObjecet进行测试,因为只允许一个 Outlook 实例,因此CreateObject会获取现有实例(如果有的话)。 -
你想附加什么?安装程序/可执行文件将引发该警告。是否可以在附加之前压缩文件?
-
@DougGlancy 我已尝试解决所有问题,但这会触发有关访问联系人文件夹的消息。我会考虑保存它们,其中可能有一些东西。在旁注中,我大体同意您所说的,我测试应用程序是否已打开的原因是因为如果 Outlook 尚未打开,我将关闭它。
-
在我的邮件发送应用程序中,我总是在 Outlook 中使用一个暴露的宏,我可以从 excel 中访问它。我从来没有遇到过问题。 Outlook 会自行发送邮件,因此访问联系人/解析地址没有问题 - 病毒邮件也没有问题。