如何使用C#中的IMAP连接到outlook获取邮件

治辉 姚 20 信誉分
2024-09-27T09:47:13.26+00:00

有没有大佬知道哪有关于C#使用IMAP和OAuth验证连接outlook邮箱并获取邮件的文档,我找了一天的就是找不到

Outlook
Outlook
Microsoft 电子邮件和日历产品系列。
51 个问题
C#
C#
一种面向对象的类型安全的编程语言,它起源于 C 语言系列,包括对面向组件的编程的支持。
191 个问题
0 个注释 无注释
{count} 票

1 个答案

排序依据: 非常有帮助
  1. Jiale Xue - MSFT 46,956 信誉分 Microsoft 供应商
    2024-10-01T08:53:59.83+00:00

    可以使用Microsoft Graph API结合OAuth 2.0来实现C#中的IMAP连接到outlook获取邮件.

    这是 Graph的相关文档:身份验证和授权基础知识

    Microsoft 标识平台中的 OAuth 2.0 和 OpenID Connect (OIDC)

    示例:通过授权代码流程获取令牌

    using System;
    using Microsoft.Identity.Client;
    
    class Program
    {
        static async Task Main(string[] args)
        {
            var clientId = "your-client-id";
            var tenantId = "your-tenant-id";
            var clientSecret = "your-client-secret";
    
            IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId)
                .WithClientSecret(clientSecret)
                .WithAuthority(new Uri($"https://login.microsoftonline.com/{tenantId}"))
                .Build();
    
            string[] scopes = { "https://graph.microsoft.com/.default" };
    
            AuthenticationResult result = await app.AcquireTokenForClient(scopes).ExecuteAsync();
    
            Console.WriteLine($"Token: {result.AccessToken}");
        }
    }
    

    获取邮件: 使用 Microsoft Graph API 获取邮件。下面是通过 Graph API 调用的示例:

    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Threading.Tasks;
    
    class Program
    {
        static async Task GetEmails(string accessToken)
        {
            var client = new HttpClient();
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
            var response = await client.GetAsync("https://graph.microsoft.com/v1.0/me/messages");
            var content = await response.Content.ReadAsStringAsync();
            Console.WriteLine(content);
        }
    }
    

    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。

    注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。