在本文中,将扩展使用 Microsoft Graph 邮件 API 使用 Microsoft Graph 生成 PowerShell 脚本 中创建的应用程序。 使用 Microsoft Graph 列出用户的收件箱并发送电子邮件。
列出用户的收件箱
首先,在用户的电子邮件收件箱中列出邮件。
在经过身份验证的 PowerShell 会话中
$user,验证变量是否已设置。PS > $user.DisplayName Megan Bowen运行以下命令以列出用户的收件箱。
Get-MgUserMailFolderMessage -UserId $user.Id -MailFolderId Inbox -Select ` "from,isRead,receivedDateTime,subject" -OrderBy "receivedDateTime DESC" ` -Top 25 | Format-Table Subject,@{n='From';e={$_.From.EmailAddress.Name}}, ` IsRead,ReceivedDateTime查看输出。
Subject From IsRead ReceivedDateTime ------- ---- ------ ---------------- Updates from Ask HR and other communities Contoso Demo on Yammer False 4/19/2022 10:19:02 PM Employee Initiative Thoughts Patti Fernandez False 4/19/2022 3:15:56 PM Voice Mail (11 seconds) Alex Wilber False 4/18/2022 2:24:16 PM Our Spring Blog Update Alex Wilber True 4/18/2022 1:52:03 PM Atlanta Flight Reservation Alex Wilber False 4/13/2022 2:30:27 AM Atlanta Trip Itinerary - down time Alex Wilber False 4/12/2022 4:46:01 PM
列出收件箱代码说明
考虑用于列出用户收件箱的命令
访问已知邮件文件夹
命令 Get-MgUserMailFolderMessage 生成对 列表消息 API 的请求,特别是使用 GET /users/{user-id}/mailFolders/{folder-id}/messages 终结点。 API 仅返回请求的邮件文件夹中的邮件。 在这种情况下,由于收件箱是用户邮箱中默认的已知文件夹,因此可通过其已知名称对其进行访问: -MailFolderId Inbox。 非默认文件夹的访问方式相同,方法是将已知名称替换为邮件文件夹的 ID 属性。 有关可用已知文件夹名称的详细信息,请参阅 mailFolder 资源类型。
访问集合
与上一 Get-MgUser 部分中返回单个 对象的命令不同,此方法返回消息集合。 Microsoft Graph 中返回集合的大多数 API 不会在单个响应中返回所有可用结果。 相反,它们使用 分页 返回部分结果,同时为客户端提供请求下一页的方法。
默认页面大小
使用分页的 API 实现默认页面大小。 对于消息,默认值为 10。 客户端可以使用 $top 查询参数请求更多 (或更少的 ) 。 在 Microsoft Graph PowerShell SDK 中,使用 -Top 25 参数完成添加$top。
注意
通过 -Top 传递的值是上限,而不是显式数字。 API 返回一些 消息,最多返回 指定值。
集合排序
函数在 -OrderBy 请求上使用 参数来请求按消息接收时间排序的结果, (receivedDateTime 属性) 。 它包含DESC关键字 (keyword) 以便先列出最近收到的消息。 此参数将 $orderby 查询参数 添加到 API 调用。
发送邮件
现在,添加以经过身份验证的用户身份发送电子邮件的功能。
在经过身份验证的 PowerShell 会话中
$user,验证变量是否已设置。PS > $user.DisplayName Megan Bowen使用以下命令定义表示 发送邮件 API 的请求正文的对象。
$sendMailParams = @{ Message = @{ Subject = "Testing Microsoft Graph" Body = @{ ContentType = "text" Content = "Hello world!" } ToRecipients = @( @{ EmailAddress = @{ Address = ($user.Mail ?? $user.UserPrincipalName) } } ) } }使用以下命令发送消息。
Send-MgUserMail -UserId $user.Id -BodyParameter $sendMailParams注意
如果使用 Microsoft 365 开发人员计划中的开发人员租户进行测试,则发送的电子邮件可能未送达,并且可能会收到无法交付的报告。 如果要取消阻止从租户发送邮件,请通过Microsoft 365 管理中心联系支持人员。
若要验证是否已收到消息,请重复
Get-MgUserMailFolderMessage上一步中的 命令。
发送邮件代码说明
请考虑用于发送消息的命令。
发送邮件
命令 Send-MgUserMail 生成对 发送邮件 API 的请求。
创建对象
与以前调用 Microsoft Graph(仅读取数据)不同,此调用会创建数据。 若要使用 SDK 创建项,请创建一个表示请求正文的对象,设置所需的属性,然后在 参数中 BodyParameter 传递它。