当前位置: 首页 > 知识库问答 >
问题:

C#控制台应用程序-解析Office 365收件箱

微生嘉
2023-03-14

通过我找到的一个名为eagetmail的包,我得以成功。不幸的是,我很快意识到他们有一个令牌系统,这不是一个免费的方法。

还有一些其他的选择可用,比如使用Outlook Mail REST APIMimeKit,但是我不知道如何实现最终结果,因为在这两个引用中都没有演示如何解析帐户的收件箱的“开始到结束”代码。

using (var client = new SmtpClient ())
{
    client.Connect("outlook.office365.com", 587);
    client.Authenticate("myemail@office365account.com", "mypassword");

    var message = MimeMessage.Load(stream);
}

我愿意看到不通过eagetmail的任何其他方法来解决这个问题。如果任何人有一个轻量级的解决方案,从实际建立一个连接,从收件箱拉消息,将是伟大的看到!

共有1个答案

越嘉树
2023-03-14

我使用EWS(Exchange Web服务)获得了它。这是我的代码:

private static bool RedirectionUrlValidationCallback(string redirectionUrl)
{
    // The default for the validation callback is to reject the URL.
    bool result = false;

    Uri redirectionUri = new Uri(redirectionUrl);

    // Validate the contents of the redirection URL. In this simple validation
    // callback, the redirection URL is considered valid if it is using HTTPS
    // to encrypt the authentication credentials. 
    if (redirectionUri.Scheme == "https")
    {
        result = true;
    }
    return result;
}
static void Main(string[] args)
{
    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);

    service.Credentials = new WebCredentials("email@myemail.com", "myPassword");
    service.AutodiscoverUrl("email@myemail.com", RedirectionUrlValidationCallback);

            //creates an object that will represent the desired mailbox
    Mailbox mb = new Mailbox(@"email@myemail.com");

    //creates a folder object that will point to inbox folder
    FolderId fid = new FolderId(WellKnownFolderName.Inbox, mb);

    //this will bind the mailbox you're looking for using your service instance
    Folder inbox = Folder.Bind(service, fid);

    //load items from mailbox inbox folder
    if (inbox != null)
    {
        FindItemsResults<Item> items = inbox.FindItems(new ItemView(100));

        foreach (var item in items)
        {
            item.Load();
            Console.WriteLine("Subject: " + item.Subject);
        }
    }
}   
 类似资料:
  • 本文向大家介绍C#控制台程序使用Log4net日志组件详解,包括了C#控制台程序使用Log4net日志组件详解的使用技巧和注意事项,需要的朋友参考一下 C#控制台程序使用Log4net日志组件,供大家参考,具体内容如下 1、Log4net一般都不陌生,但是在配置上不同类型的项目又不相同的地方比如C#控制台程序和C# MVCWeb项目,拿控制台项目为例 项目源码在文章底部 2、首先创建一个控制台程序

  • 问题内容: 我刚刚开始弄乱JLine来解析控制台模式下的字符输入。看来运作良好,但我想知道: JLine中是否有非阻塞方式来查找字符是否可用?(例如,在Windows中。) 我想我总是可以将键盘输入包装在其自己的线程中,该线程随后将键盘字符提供给主线程一个线程安全的队列,但这似乎是不必要的。 编辑 :这是逐字符解析。我不会使用GUI。在控制台模式下,Java中通常的InputStream I /

  • 我需要调用微软图形API在Azure广告中创建用户。 首先,我需要测试从控制台应用程序,然后需要实现在Azure函数。 https://developer.microsoft.com/en-us/graph/graph-explorer

  • sh wget progressbar colorama Gooey——把 CLI 程序变成 GUI

  • 问题内容: 有什么方法可以使用C在Linux中模拟按键吗? 在我的特定情况下,我使用的是Ubuntu 9.04,需要一个简单的应用程序,该应用程序在启动时会调用“暂停”按钮。那将使Firefox中的iframe使用Javascript刷新。 问题答案: 我认为您的意思是“ X11应用程序”-从您的描述中还不能完全清楚您打算做什么。下面的代码片段将使用XTest扩展名将“暂停”键代码发送到当前在X1

  • 我按照以下步骤为我的非IIS安装和配置New Relic。NET应用程序:https://docs.newrelic.com/docs/agents/net-agent/instrumentation/instrumenting-non-iis-apps 在应用程序的配置文件中启用代理。在配置文件中,使用名为NewRelic的键添加一个新的appSset。代理启用,值为true。 我已经完成了所有