C# - 从Outlook中的非默认帐户中读取电子邮件

时间:2016-01-21 19:23:12

标签: c# api email outlook

我正在尝试使用C#(不是我的默认收件箱)从Outlook中的特定文件夹和另一个收件箱中读取和打印电子邮件的内容。我发现很难在网上找到这个例子并且我自己失败了。我知道如何打印默认帐户的电子邮件,而不是其他的。

我的代码只是迭代所有收件箱的列表并打印出他们的名字。我想读的是集合中的第一个元素。我对此问题表示感谢。感谢。

using System;
using System.Collections;
using Microsoft.Office.Interop.Outlook;

public class StorageReplies {

    public static void Main() {
        Application app = new Microsoft.Office.Interop.Outlook.Application(); 
        _NameSpace ns = app.GetNamespace("MAPI");

        Folders folders = ns.Folders;

        foreach(MAPIFolder f in folders) {
            Console.WriteLine(f.Name);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您可以获取每个文件夹的商店,然后调用GetDefaultFolder方法获取相应商店的收件箱文件夹,如下所示:

foreach (MAPIFolder f in folders)
{
    MAPIFolder inbox_folder = f.Store.GetDefaultFolder(OlDefaultFolders.olFolderInbox);

    foreach (MailItem item in inbox_folder.Items)
    {
        //Access item here
    }
}

然而,不是这样做,而是直接循环遍历Stores属性是有道理的:

Stores stores = ns.Stores;

foreach (Store store in stores)
{
    MAPIFolder inbox_folder = store.GetDefaultFolder(OlDefaultFolders.olFolderInbox);

    foreach (MailItem item in inbox_folder.Items)
    {
        //Access item here
    }                
}