編集: 新しい情報: Mailitem.Body の戻り値は "" ですが、実際の値は "アプリケーション定義またはオブジェクト定義のエラー" であることに気付きました。それが何を意味するのかは完全にはわかりませんが、複数のフィールドに表示されることは知っています. 以下にスクリーンショットを含めました.
特定のプロパティが正しい値を返し、他のプロパティが返さないという問題があります。件名が「件名」、メッセージが「本文」、送信者の電子メール アドレスが「email@address.com」、送信日が 2013 年 6 月 12 日の電子メールの例があります。
次のコードを実行すると:
Dim ComputerName As String
Dim ErrorState As String
For Each MailItem In InboxItems
ComputerName = MailItem.Subject
'ErrorState = MailItem.Body
ErrorState = MailBody(MailItem)
strDate = GetDate(MailItem.SentOn)
SenderEmail = MailItem.SenderEmailAddress
If strDate = DateToday And SenderEmail = "email@address.com" Then
Computers(a, 0) = ComputerName
Computers(a, 1) = ErrorState
a = a + 1
End If
Debug.Print MailItem.Subject
Debug.Print MailItem.Body
Next MailItem
私が取得するのは、ComputerName = "Subject"、ErrorState = ""、SenderEmail = ""、および strDate = "2013/6/12" (この場合は適切な形式です) です。Mailitem の 2 つのプロパティでは適切な値が返されるのに、他の 2 つのプロパティでは返されないのはなぜでしょうか? これは非常に奇妙な問題です。皆さんができる助けをいただければ幸いです。
ここで、コードのコンテキストをさらに追加します。
Set objOutlook = CreateObject("Outlook.Application", "localhost")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set Inbox = GetFolder("email@address.org/inbox")
Set InboxItems = Inbox.Items
InboxItems.SetColumns ("SentOn")
GetFolder は、フォルダ パスでメールボックスを取得する関数です。Outlook で既定の受信トレイを使用していないため、これを行う必要があります。
また、本文が HTML または RTF 形式の場合に備えて、以下で提案されている MailBody 関数を使用してみました。残念ながら、本文は正常であることが証明され、MailItem.Body はそれを取得するはずでしたが、まだ機能していません。メールに本文があることはわかっていますが、MailItem.Body は "" を返します。体はまさにナンバーワンであり、それは私が得るべきものです.
また、メールの送信者は受信者と同じであることに注意してください。つまり、電子メールは、ある電子メール アドレスからそれ自体に送信されました。これが違いを生むかどうかはわかりませんが、念のためそこに置いておくことにしました。