1

私のcシャーププログラムは現在、Outlookの電子メールを取得し、それらをデータセットにインポートします。ただし、各メールの件名のみを取得しています。

サブジェクトを取得するためにこの変数を使用しMicrosoft.Office.Interop.Outlook.Folder olCurrFolder;ています(olCurrFolderは別のループから設定されます)。主題を得るために私はこれをします:

intMailCount = olCurrFolder.Items.Count;

for (int i = 1; i <= intMailCount; i++)
{
    strSubject = olCurrFolder.Items[i].Subject;
    strEmailReceived = olCurrFolder.Items[i].Received;
}

ご覧のとおり、受信日も取得しようとしていますが、Items[i].Received動作しません。ピリオドの後にピリオドを入力してもインテリセンスは何もプルアップせずItems[i]、実行時に解決されるというメッセージが表示されます。他のフィールドが何と呼ばれているのかわかりません(つまり、受信日、差出人、サイズ)。

探しているフィールド名のリストはありますか?

4

3 に答える 3

1

Outlook MailItemオブジェクトのドキュメントは次のとおりです:http://msdn.microsoft.com/en-us/library/aa210946(v = office.11​​).aspx

プロパティを使用してReceivedTime、受信した日時を取得できます。

インテリセンスがVSTOで機能しないことがある理由は、多くのプロパティがを返すためdynamicです。ダイナミクスは、考えられるすべてのメソッドとプロパティをサポートするオブジェクトのように扱われます。これが、インテリセンスが機能しない原因です。存在しないメソッドを使用すると、コンパイルされますが、実行時に失敗します。

VSTOでダイナミクスを操作する場合、MSDNのドキュメントは非常に貴重です。

于 2012-05-17T01:47:32.850 に答える
0

これが私がやった方法です

for (int i = 1; i <= items.Count; i++)
{
    if (items[i] is Outlook.MailItem)
    {
        SenderName = ((Outlook.MailItem)inbox.Items[i]).SenderName;
        SenderEmail =((Outlook.MailItem)inbox.Items[i]).SenderEmailAddress;
        Subject = ((Outlook.MailItem)inbox.Items[i]).Subject;
        Time = ((Outlook.MailItem)inbox.Items[i]).CreationTime.ToString();
于 2016-09-13T00:58:54.313 に答える
0

各行にオブジェクトをキャストしたくない場合は、次のようにすることができます。

        for (int i = 0; i < items.Count; i++)
        {
            var mailItem = items[i] as Outlook.MailItem;
            if (mailItem != null)
            {
                SenderName = mailItem.SenderName;
                //etc...
            }
        }
于 2016-12-17T00:16:21.900 に答える