【问题标题】:Read Email Outlook 365 folder - EWS阅读电子邮件 Outlook 365 文件夹 - EWS
【发布时间】:2021-12-26 12:49:45
【问题描述】:

我想访问我之前在 Microsoft Exchange 中创建的名为“EIMS”的新文件夹中的电子邮件。
我只知道如何访问收件箱,但无法访问特定文件夹。

这是我的 C# 代码:

static void GetInboxMail(string emailAddress, string pass)
{
    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
    service.Credentials = new NetworkCredential(emailAddress, pass);

    service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");

    if (service != null)
    {
        FindItemsResults<Item> result = service.FindItems(WellKnownFolderName.Inbox, new ItemView(100));

        foreach (Item item in result)
        {
            EmailMessage message = EmailMessage.Bind(service, item.Id);
            string body = message.Body.Text;
            string from = message.From.Name.ToString();
            string subject = message.Subject.ToString();
            Console.WriteLine("Email Sender :" + from);
            Console.WriteLine("Email Body" + body);
            Console.WriteLine("Email Subject" + subject);
        }
    }
}

有什么建议可以在我的代码中添加吗?

【问题讨论】:

标签: c# office365 exchangewebservices


【解决方案1】:

您需要首先找到 TargetFolders FolderId,然后您可以针对该文件夹进行搜索。人们有几种不同的方法,例如Get to an Exchange folder by path using EWS

我一直使用的方法是输入一个路径,然后进行浅层搜索以找到目标文件夹,例如 GetFolderFromPath(service,"mailbox@domaim.com","\Inbox\folder")

internal static Folder GetFolderFromPath(ExchangeService service,String MailboxName,String FolderPath)
{
    FolderId folderid = new  FolderId(WellKnownFolderName.MsgFolderRoot,MailboxName);   
    Folder tfTargetFolder = Folder.Bind(service,folderid);
    PropertySet psPropset = new PropertySet(BasePropertySet.FirstClassProperties);
    String[] fldArray = FolderPath.Split('\\'); 
    for (Int32 lint = 1; lint < fldArray.Length; lint++) { 
        FolderView fvFolderView = new FolderView(1);
        fvFolderView.PropertySet = psPropset;
        SearchFilter  SfSearchFilter = new SearchFilter.IsEqualTo(FolderSchema.DisplayName,fldArray[lint]); 
        FindFoldersResults findFolderResults = service.FindFolders(tfTargetFolder.Id,SfSearchFilter,fvFolderView); 
        if (findFolderResults.TotalCount > 0){ 
        foreach(Folder folder in findFolderResults.Folders){ 
            tfTargetFolder = folder;                
            } 
        } 
        else{ 
            tfTargetFolder = null;  
            break;  
        }     
    }
    if (tfTargetFolder != null)
    {
        return tfTargetFolder;
    }
    else
    {
        throw new Exception("Folder Not found");
    }
}

【讨论】:

  • 非常感谢,它非常适合我
猜你喜欢
  • 1970-01-01
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-05
  • 2018-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多