Vbscript 是什么导致Outlook 2007提示;某个程序正试图代表您发送电子邮件?“;

Vbscript 是什么导致Outlook 2007提示;某个程序正试图代表您发送电子邮件?“;,vbscript,outlook-2007,Vbscript,Outlook 2007,我在Outlook中构建了一个自定义表单,它可以在进行更改时发送电子邮件通知。由于表单的规范,我不得不在表单中添加一些VBScript(不幸的是),以便在表单的关闭事件时发送电子邮件 该表单目前已发布,效果良好。出现的唯一问题是我是唯一一个使用以下对话框提示的表单的用户: 没有其他使用该表单的用户获得该对话框此对话框强制您等待进度条完成后才“允许”您发送电子邮件(大约5秒)。是因为我是发布者吗?还是我遇到的客户端设置如何禁用此小狗? 如果相关信息来源如下: Sub SendAttach()

我在Outlook中构建了一个自定义表单,它可以在进行更改时发送电子邮件通知。由于表单的规范,我不得不在表单中添加一些VBScript(不幸的是),以便在表单的关闭事件时发送电子邮件

该表单目前已发布,效果良好。出现的唯一问题是我是唯一一个使用以下对话框提示的表单的用户:

没有其他使用该表单的用户获得该对话框此对话框强制您等待进度条完成后才“允许”您发送电子邮件(大约5秒)。是因为我是发布者吗?还是我遇到的客户端设置如何禁用此小狗?

如果相关信息来源如下:

Sub SendAttach() 
   'Open mail, adress, attach report
   Dim objOutlk             'Outlook
   Dim objMail                  'Email item
   Dim strMsg
   Const olMailItem = 0

  'Create a new message
   set objOutlk = createobject("Outlook.Application")
   set objMail = objOutlk.createitem(olMailItem)
   objMail.To = Item.UserProperties("Assigned To")
   objMail.cc = Item.UserProperties("Bcc")

   'Set up Subject Line
   objMail.subject = "Work Order Notifications: " & Item.UserProperties("Work Order Number") & " - " & _
                Item.UserProperties("Subject") & " Due " & Item.UserProperties("Due Date")

   'Add the body    
   strMsg = Item.UserProperties("Specifications") & vbcrlf
   strMsg = strMsg & Item.UserProperties("Constraints")

   objMail.body = strMsg
   objMail.display 'Use this to display before sending, otherwise call objMail.Send to send without reviewing

   objMail.Send
   'Clean up
   set objMail = nothing
   set objOutlk = nothing
End sub
这里的安全不是一个问题。如果有人设法开始从我的工作站发送电子邮件,我就有比电子邮件欺骗更大的问题了


作为旁注,我无法决定是苏还是苏是回答这个问题的最佳地点。如有必要,请相应地重定向。

我不久前在尝试完成一些稍有不同的任务时遇到了这个问题,但出于同样的目的。香港提供的链接有助于阅读,有助于理解正在发生的事情,但最终我选择不使用页面上讨论的任何选项。相反,我保持了它的简单性,并决定愚弄outlook,使其认为我是在发送电子邮件,而不是一个自动化的过程,为此,我用SendKeys替换了objMail.Send,以模拟自己按下Send按钮,虽然有点难看,但在我的情况下,它起到了作用

编辑:

您可以使用此sendkeys语句:

SendKeys "%{s}", 1
这基本上调用Alt+S,触发outlook发送按钮。

三个选项

- Use a pc without the MS Outlook security patch
- Use the redemption ocx (google it up to download)
- Use SMTP instead of outlook
对于第二个选项,这里是一个示例

Function sendmail2 (sRecipient, sSubject, sMsg, sAttach)
    on error resume next
    dim SafeItem, oItem  
    set SafeItem = CreateObject("Redemption.SafeMailItem") 'Create an instance of Redemption.SafeMailItem 
    set oItem = oApp.CreateItem(0) 'Create a new message
    With SafeItem
      .Item = oItem 'set Item property 
      .Recipients.Add sRecipient
      .Recipients.ResolveAll 
      .Subject = sSubject
      .HTMLBody = sMsg
      .Send 
    End With
  End Function

我遇到了同样的问题,因为我的应用程序运行在Windows7上,所以我能够使用WindowsMail客户端(wlmail.exe)而不是MS Outlook发送电子邮件。使用Wlmail时,警告仍然是默认行为,但有一个选项可以通过转到“选项”>“安全”选项卡来关闭警告,关闭后,程序可以发送邮件而不弹出弹出窗口。

另一个可能的解决方法是更新计算机上的注册表设置


此链接概述了如何识别相关注册表项以及应设置的值。这允许您覆盖信任中心设置。

我不想重写已经编写好的内容。请看一下您在这里的有限选项:顺便说一句,您看到的行为在不同的计算机上可能有所不同,这取决于使用的是哪个版本的MS Office,安装了哪些更新,以及它们的MS Office安全设置。我对VBS不太熟悉。SendKeys方法可以与表单对象(如
Me.SendKeys(“{ENTER}”)
一起内联调用吗?还是必须在发送中创建一个
WScript
对象?我已经添加了我使用的Alt+S SendKeys方法,只要outlook窗口有焦点,它就可以在没有单独WScript的情况下内联使用