我通过从 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 函数。此方法不会导致警告,但通常会导致一个对话框询问用户是否希望允许访问他们的联系人。