如何在 .NET 应用中使用 Microsoft 365 Graph API 发送电子邮件
将安全的邮件发送功能集成到您的 .NET 应用中,支持消息撰写、OAuth2 身份验证和文件附件。
下载免费试用版在 C# 中使用 Microsoft 365 Graph API 发送电子邮件
将 Microsoft Graph API 集成到 .NET 应用中,使开发者能够简化通过 Microsoft 365 服务发送消息的过程。 Aspose.Email for .NET 简化了此过程,提供了附件处理、跟踪和安全通信等增强功能。该库使您能够直接从 .NET 应用创建并发送个性化、高性能的电子邮件通信。
使用 Aspose.Email 与 Microsoft Graph 的关键优势
无需 SMTP 或基础认证 - 使用安全的现代基于令牌的身份验证(OAuth2)。
Microsoft 365 与 Outlook 集成 - 轻松连接 Microsoft 365 邮箱和服务。
面向 .NET 开发者的企业级准备 - 旨在实现可扩展性、可靠性和企业邮件工作流。
完全托管的 API - 无外部依赖 - 一体化 .NET 库,无需 Graph SDK 或第三方客户端。
支持 .NET Framework 与 .NET Core / .NET 6+ - 兼容现代与传统 .NET 环境。
快速部署,最少配置 - 易于使用的 API,附示例代码,快速实现。
代码示例
体验使用 Aspose.Email 内置 Graph 客户端将 Microsoft 365 邮件发送集成到 .NET 应用的简便性。
发送邮件示例代码 - C#
var client = GraphClient.GetClient(authProvider);
var message = new MailMessage(...);
client.Send(message);
工作原理
Microsoft Graph 是一个 RESTful Web API,允许访问 Microsoft 365 服务,包括发送电子邮件的功能。通过 Microsoft Graph 发送邮件时,使用 HTTP POST 向 /sendMail 端点发送请求,并附带邮件负载。该负载通常是一个 JSON 对象,包含邮件内容(收件人、主题、正文等)及任何附件。
MS Graph 接收到请求后会进行处理并返回 HTTP 状态码。成功发送时返回 202 Accepted,表示消息已加入发送队列。处理这些响应可帮助开发者确保通信成功或排查可能出现的问题。
对 Microsoft Graph 请求进行身份验证
调用 Microsoft Graph 并非仅仅发送 HTTP 请求——您必须先处理身份验证。Graph API 受 Azure Active Directory(Azure AD)保护,这意味着在发出任何请求之前必须获取访问令牌。该令牌根据身份验证过程中授予的权限指定您允许执行的操作。
要进行身份验证,首先需要在 Azure AD 中设置应用注册,定义所需权限,然后使用相应的 OAuth 流程请求访问令牌。获取令牌后,将其包含在 Authorization 请求头部。
Aspose.Email for .NET 简化了获取和管理访问令牌的过程,确保应用能够安全地与 Microsoft Graph 交互。通过实现其 ITokenProvider 接口,开发者可以高效检索身份验证所需的 OAuth 2.0 令牌。完成 Azure 门户中的应用注册并授予必要的权限(如 Mail.Send)后,开发者即可使用库功能将丰富的邮件功能集成到应用中。
从以下几个关键步骤开始:
- 在 Azure 门户中注册您的应用 并授予诸如
Mail.Send用于发送电子邮件。 - 获取访问令牌:实现 ITokenProvider Aspose.Email for .NET 的接口,以检索身份验证所需的 OAuth 2.0 令牌。
- 通过以下方式安装 Aspose.Email for .NET NuGet 或通过下载其 DLL 文件。
按照这些步骤操作,您就可以顺利开始编写代码。
了解 Microsoft Graph 的请求与响应
请求:消息主题、正文、收件人详情和附件等数据采用 JSON 格式组织。当调用 Send 方法时,这些数据会序列化并作为 POST 请求发送至 Microsoft Graph 的 /sendMail 端点。
响应:Graph API 的响应以状态码返回。202 Accepted 表示传输成功,而 401 Unauthorized、403 Forbidden 等错误码可能表明身份验证或权限存在问题。
.NET 库提供了在与 Microsoft Graph 等外部服务交互时用于构建、发送请求和解析响应的内置功能。这些功能让开发者能够简化与 Microsoft 365 服务(如 Outlook、Calendar、Contacts)的通信,无需手动编写 HTTP 请求或解析原始 JSON 响应。
构建请求:Aspose.Email 通过提供特定的类和方法简化了请求的创建,抽象了请求构造的复杂性。例如,开发者可以通过直观的 API 与邮件、日历和联系人交互,而无需手动构建所需的 Graph 请求。
发送请求:该库内置了直接向 Microsoft Graph 等服务发送请求的机制。无需手动处理身份验证和 HTTP 方法,Aspose.Email 在幕后完成这些步骤。它会添加必要的头信息,如授权令牌和内容类型,确保请求的格式符合与 Microsoft 服务的成功通信要求。
解析响应:支持响应解析后,它可以将原始 JSON 或 XML 响应转换为结构化对象,如 MailMessage、CalendarEvent 或 Contact。这消除了开发者直接处理 JSON 解析的需求。解析后的数据可立即在应用中使用,使集成过程更加流畅高效。
这些功能使开发者能够更多关注业务逻辑,而不是管理与邮件服务交互的底层复杂性。
完整的 C# 代码示例:使用 OAuth2 和 Aspose.Email 发送电子邮件
以下示例展示了通过 Aspose.Email for .NET 使用 Graph API 发送电子邮件的完整流程。仅需几行代码即可生成 OAuth2 访问令牌、初始化 Graph 客户端、编写消息并发送:
- 创建以下类的实例 IGraphClient 通过调用 GetClient 方法。
- 初始化一个 MailMessage 类发送消息,设置其属性。
- 使用 发送 库的方法。
完整的 OAuth2 与 Microsoft Graph 集成示例
using Aspose.Email;
using Aspose.Email.Clients.Graph;
// Generate the access token
AccessTokenProvider tokenProvider = new AccessTokenProvider();
// Create a Graph client
IGraphClient client = GraphClient.GetClient(tokenProvider, "tenant ID");
// Create a new message
var eml = new MailMessage(fromAddress, toAddress, subject, body);
// Send message
client.Send(eml);
发送带附件的电子邮件
使用 Aspose.Email for .NET 库通过 Microsoft Graph 发送带附件的电子邮件既简单又高效。附件可以是任何文件类型,如文档、图片或 PDF,并随邮件一起发送。这对于通过 .NET 应用直接共享报告、演示文稿或其他重要文档等资源尤为有用。
在下面的代码片段中,附件在发送邮件之前被添加到 MailMessage 对象:
发送邮件示例代码 - C#
// Add attachments to the message
Attachment attachment = new Attachment("path_to_attachment");
eml.Attachments.Add(attachment);
附件的处理方式
- 加载附件:附件从指定的文件路径("path_to_attachment")加载,可能是本地文件或流。 Attachment 类允许您将任何文件类型添加为附件,具备高度灵活性。
- 添加到邮件:创建附件后,使用 Attachments.Add() 方法。该方法将文件追加到 MailMessage 对象的附件集合会在通过 MS Graph 发送时自动包含。
- 发送邮件:附件添加到消息后, 发送 来自 IGraphClient 接口会将所有附件文件一起发送邮件。
处理多个附件
您可以通过对每个文件重复此过程轻松添加多个附件。以下是如何添加多个文件的示例:
Attachment attachment1 = new Attachment("file1.pdf");
Attachment attachment2 = new Attachment("image.png");
eml.Attachments.Add(attachment1);
eml.Attachments.Add(attachment2);
附件大小限制
需要注意的是,Microsoft Graph 对邮件大小有严格限制。电子邮件(含附件)的总大小不得超过 25 MB。如果需要发送更大的文件,请考虑将其上传至云存储服务(如 OneDrive),并发送文件链接。
想了解更多?探索完整的 Microsoft Graph 支持
Aspose.Email for .NET 通过 Graph API 提供了扩展的 Microsoft 365 集成,您还可以:
管理文件夹、消息和草稿
处理附件和类别
处理联系人、日历事件、笔记本等
完整探索 Microsoft Graph 功能.