4

これは、このメインの質問のサブの質問です

次の関数を使用して、他のフォルダーのインターネットヘッダーをループ取得できます

Sub testing()
Dim ns As Outlook.NameSpace
Dim folder As MAPIFolder
 Dim item As MailItem
Set ns = Session.Application.GetNamespace("MAPI")
Set folder = ns.GetDefaultFolder(olFolderInbox)

 For Each item In folder.Items

    If (item.Class = olMail) Then
        GetInetHeaders item
    End If
Next item

End Sub

Function GetInetHeaders(olkMsg As MailItem) As String

    ' Purpose: Returns the internet headers of a message.'

    ' Written: 4/28/2009'

    ' Author:  BlueDevilFan'

    ' Outlook: 2007'

    Const PR_TRANSPORT_MESSAGE_HEADERS = "http://schemas.microsoft.com/mapi/proptag/0x007D001E"

    Dim olkPA As Outlook.PropertyAccessor

   Set olkPA = olkMsg.PropertyAccessor

    GetInetHeaders = olkPA.GetProperty(PR_INTERNET_MESSAGE_ID)

    Debug.Print olkMsg.Subject
    Debug.Print GetInetHeaders


    Set olkPA = Nothing

End Function

しかし、「送信済みアイテム」フォルダーで作業していません。これについての経験や参照はありますか?

FAIL プロパティは何も返しません

Sub testing2()
Dim item As MailItem
Set Store = Application.GetNamespace("MAPI").Folders
  For Each StoreFolder In Store

      For i = 1 To StoreFolder.Folders.Count
        If StoreFolder.Folders(i).Name = "Sent Items" Then
            For Each item In StoreFolder.Folders(i).Items
                If (item.Class = olMail) Then
                    GetInetHeaders item
                End If
            Next item
            Exit For
        End If
      Next
    Exit For

  Next
End Sub

編集達成できない場合は、メールで自分自身を BCC できます。

4

1 に答える 1

5

PR_TRANSPORT_MESSAGE_HEADERSは、POP3アカウントから受信したメッセージでのみ使用できます。送信メッセージに設定されることはありません。また、すべてのフォルダーをループする理由はまったくありません-Application.Session.GetDefaultFolder(olFolderSentMail)を使用してください-「送信済みアイテム」フォルダー名がローカライズされている場合でも機能します。次に、フォルダ内のすべてのアイテムを本当に処理する必要がありますか?

PR_INTERNET_MESSAGE_ID(DASL名schemas.microsoft.com/mapi/proptag/0x1035001F)プロパティが設定されているかどうかを確認します。

于 2013-01-28T18:02:00.873 に答える