【问题标题】:Send Email via Macro in 'Rules and Alerts'通过“规则和警报”中的宏发送电子邮件
【发布时间】:2023-03-10 11:15:01
【问题描述】:

我想通过 Outlook 2007 中的“规则和警报”发送自定义电子邮件。

Sub SpirentBoxcarEmail()

Dim objOutlook As Object
Dim objOutlookMsg As Object

Set objOutlook = CreateObject("Outlook.Application")
Set objOutlookMsg = objOutlook.CreateItem(0)

With objOutlookMsg
    .To = "me@email.com"
    .Subject = "Test"
    .Body = "Test"
    .Send
End With

Set objOutlookMsg = Nothing
Set objOutlook = Nothing
End Sub

我知道我需要将“item As Outlook.MailItem”之类的内容添加到子标题的 () 中,以便宏显示在“脚本”下

但是,我真的需要为这个“项目”分配任何东西吗?

宏在没有添加“项目”的情况下运行良好,但是一旦我添加“项目作为 Outlook.MailItem”并且规则执行脚本(宏),电子邮件就不会被发送出去。

【问题讨论】:

    标签: vba outlook rules


    【解决方案1】:

    非常奇怪,适用于接收消息规则。能否在程序中设置断点,看看脚本是否真的在执行?

    【讨论】:

      【解决方案2】:

      我认为 Outlook 正在寻找特定的函数签名。该规则期望将当前邮件项传递给宏。试试这个。

      Sub SpirentBoxcarEmail(ByRef t As MailItem)
      
      Dim objOutlook As Object
      Dim objOutlookMsg As Object
      
      Set objOutlook = CreateObject("Outlook.Application")
      Set objOutlookMsg = objOutlook.CreateItem(0)
      
      With objOutlookMsg
          .To = "me@email.com"
          .Subject = "Test"
          .Body = "Test"
          .Send
      End With
      
      Set objOutlookMsg = Nothing
      Set objOutlook = Nothing
      End Sub
      

      【讨论】:

        【解决方案3】:

        您已经编写了 RunAScript 代码,就好像它不依赖于收到的项目一样。

        打开一个邮件项并运行 SpirentBoxcarEmail_RunAScript_Test

        Sub SpirentBoxcarEmail_RunAScript(item As mailitem)
        
        'Dim objOutlook As Object
        'Dim objOutlookMsg As Object
        
        Dim objOutlookMsg As mailitem
        
        ' Normally the trigger item is processed in some way.
        
        MsgBox "The subject of the received mail that triggered the script is: " & _
            vbCr & vbCr & item.Subject
        
        '  In this case the trigger item will now be ignored.
        
        'Set objOutlook = CreateObject("Outlook.Application")
        Set objOutlookMsg = CreateItem(0)
        
        With objOutlookMsg
            .To = "me@email.com"
            .Subject = "Test"
            .body = "Test"
            .Send
        End With
        
        Set objOutlookMsg = Nothing
        'Set objOutlook = Nothing
        End Sub
        
        
        Private Sub SpirentBoxcarEmail_RunAScript_Test()
        
        ' Open mail that fulfills the conditions of the rule
        ' This simulates mail being received
        
        Dim currItem As mailitem
        Set currItem = ActiveInspector.currentItem
        SpirentBoxcarEmail_RunAScript currItem
        
        End Sub
        

        【讨论】:

          猜你喜欢
          • 2019-10-26
          • 1970-01-01
          • 2019-06-21
          • 2016-07-24
          • 1970-01-01
          • 1970-01-01
          • 2012-09-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多