4

アイテムがフォルダーに配置されたときに基づいて自動電子メール処理を行うように設計された Outlook の VBA スクリプトがあります。これは意図したとおりに機能しますが、フォルダーに配置されている電子メールが返信されたかどうかをスクリプトが確認できるように、もう少しインテリジェントにしようとしています。

現在、メールがフォルダー X に置かれた瞬間に、スクリプトはメールに自動返信を送信し、メールを未読としてマークします。ただし、メールに既に「返信済み」のフラグが付けられている場合は、スクリプトがメールに返信したか、メールをフォルダー X に配置する前に誰かが返信を送信したかに関係なく、スクリプトが返信を送信しないようにしたいと考えています。メールを未読としてマークするだけです。これは、IMAP プロパティ タグを読み取ることで可能なことですか? もしそうなら、どのタグを探していますか? 私はこれを達成する方法を理解するのに苦労してきました。どんな助けでも大歓迎です。

参考までに、ここに私が持っているスクリプトを示します(識別の詳細は削除されています):

注:宣言された変数がいくつかありますが、参照されていないことは承知しています。これらは後で別の用途に使用します。

Option Explicit
 '##############################################
 '### all code for the ThisOutlookSession module
 '### Module level Declarations
 'expose the items in the target folder to events
Dim WithEvents ackSpamMsgs As Items
Dim WithEvents ackPhishMsgs As Items
Dim WithEvents fwdMsgs As Items
 '###############################################
Private Sub Application_Startup()
     'some startup code to set our "event-sensitive"
     'items collection
    Dim objNS As Outlook.NameSpace
    Dim ackFolder As Folder
    Dim compFolder As Folder

    Set objNS = Application.GetNamespace("MAPI")
    Set ackMsgs = objNS.Folders("Inbox").Folders("Folder X").Items
    Set fwdMsgs = objNS.Folders("Inbox").Folders("Folder Y").Items
End Sub

 '#################################################
 '### this is the ItemAdd event code
Sub ackMsgs_ItemAdd(ByVal Item As Object)
     'when a new item is added to our "watched folder"
     'we can process it
    Dim msg As MailItem
    Set msg = Item.Reply
    'This is where I want to check if the mail has been replied to, and skip the "with"
    'below if it has been replied to.
    With msg
        .Subject = "RE: " & Item.Subject
        .HTMLBody = "Body of email here"
        .Send
        Set msg.UnRead = True
    End With

End Sub

Sub fwdMsgs_ItemAdd(ByVal Item As Object)
    Dim msg As MailItem
    Dim newMsg As MailItem

    Set msg = Item.Forward
    msg.Recipients.Add ("email@email.com")
    msg.Send

End Sub

 '#################################################
Private Sub Application_Quit()

    Dim objNS As Outlook.NameSpace
    Set ackMsgs = Nothing
    Set fwdMsgs = Nothing
    Set objNS = Nothing

End Sub
4

1 に答える 1

7

求めているプロパティは PR_LAST_VERB_EXECUTED (DASL 名はhttp://schemas.microsoft.com/mapi/proptag/0x10810003) です。を使用してアクセスできるはずですMailItem.PropetyAccessor.GetProperty

OutlookSpyでメッセージを見てみましょう。IMessageボタンをクリックして、利用可能な MAPI プロパティを確認してください。

于 2013-03-10T15:07:06.510 に答える