如何引用触发outlook宏的邮件?

How to reference the mail which triggered the outlook macro?

我正在设计一个 QTP 框架,自动化工程师在其中发送电子邮件以开始执行测试套件(可以使用 MS Outlook 安排电子邮件)

收到触发邮件后,应立即下载附件,并应使用 Outlook 宏

的适当设置(自动)启动 QTP

但在上述情况下我想下载邮件的附件并将邮件移动到触发宏的其他文件夹。

有什么方法可以引用触发宏的邮件吗?

目前这就是我正在做的事情。

Sub TestSuiteInitialilzer(mail As Outlook.MailItem)
    Set ns = Application.GetNamespace("MAPI")
    Set Inbox = ns.GetDefaultFolder(olFolderInbox)
    Set objDestFolder = Inbox.Folders("RAN")
    FileName = "C:\Email Attachments\" & mail.Attachments.Item.FileName
    'Download the attachment
    Atmt.SaveAsFile FileName
    'Move the mail to another folder
    mail.Move objDestFolder
    launchQTP = "C:\Unlock.vbs"
    Set objShell = CreateObject("WScript.Shell")
    ‘Launch QTP
    objShell.Run launchQTP  
    objShell = Nothing
End Sub

您只需要定义一个接受 MailItem 作为参数的 VBA 宏子。源对象将传递给子对象,您无需在收件箱文件夹中搜索它。例如:

Public Sub Text(mail as Outlook.MailItem)
    ' do something with the mail object
End Sub

您可以使用 MailItem class 的 Attachments 属性 访问附件。 Move 方法允许将项目移动到另一个文件夹。

跳过检查整个收件箱直到匹配的两个步骤。保留您的,以防您需要为第一个匹配项目手动 运行 它。

1) 在下面添加代码(更改为使用 cscript.exe):

Sub TestSuiteInitialilzer_Rules(ByRef oMail As MailItem)
    Const FileName = "C:\Email Attachments\"
    For Each Atmt In oMail.Attachments
        'Download the attachment
        Atmt.SaveAsFile FileName & Atmt.Filename
    Next Atmt
    ' Move the Mail to objDestFolder
    oMail.Move objDestFolder
    'launchQTP = "C:\Unlock.vbs"
    launchQTP = "cscript.exe //nologo C:\Unlock.vbs"
    Set objShell = CreateObject("WScript.Shell")
    'QTP will be launched with the neccassary configurations through the vb script
    objShell.Run launchQTP
    Set objShell = Nothing
End Sub

2) 在现有规则之上添加 Outlook 规则(对我收到的邮件应用规则)。最好关闭现有的。