[玩转系统] 使用 Microsoft Graph PowerShell 发送电子邮件
作者:精品下载站 日期:2024-12-14 09:12:59 浏览:15 分类:玩电脑
使用 Microsoft Graph PowerShell 发送电子邮件
您可以使用 Send-MgUserMail PowerShell cmdlet 从 Exchange Online 发送电子邮件。连接 Microsoft Graph 后,您还可以发送自动电子邮件,而无需插入凭据。本文将向你展示如何使用 Microsoft Graph PowerShell 中的 Send-MgUserMail cmdlet 发送 Exchange Online 电子邮件。
Send-MgUserMail 先决条件
以下先决条件是必不可少的:
- 购买将用于身份验证目的的 Microsoft 365 用户许可证。
注意:Send-MgUserMail cmdlet 不适用于试用版或开发人员租户帐户。除非它是共享邮箱,否则它也无法在未经许可的邮箱中工作。共享邮箱需要有许可用户作为成员,并具有“发送为”权限才能用于 Microsoft 365 身份验证。
安装 Microsoft Graph PowerShell
首先,您需要安装 Microsoft Graph PowerShell 模块。
Install-Module Microsoft.Graph -Force
Import-Module Microsoft.Graph
重要提示:您需要 Microsoft Graph 2.0 或更高版本才能使用新参数。
验证您的 Microsoft Graph PowerShell SDK 模块版本。
Get-InstalledModule Microsoft.Graph | ft -AutoSize
让我们检查一下使用 cmdlet Send-MgUserMail 发送电子邮件的 PowerShell 脚本。
使用 Send-MgUserMail 发送电子邮件
如上所述,您可以使用 PowerShell 脚本发送电子邮件。为了使其更易于理解,我们将开始发送包含基本消息的电子邮件。然后,我们将向您展示向您要发送的电子邮件添加更多信息的其他方法,例如添加抄送/密件抄送和附件。
我们将向您展示两种使用 Send-MgUserMail 发送电子邮件的不同方法:
- 发送带有凭据的电子邮件(使用许可邮箱登录)
- 无需凭据即可发送自动电子邮件(注册应用程序和客户端密钥)
注意:配置 SPF、DKIM 和 DMARC 身份验证方法,以便发送的电子邮件将传送到收件人的收件箱,而不会被垃圾邮件过滤器阻止或传送到垃圾邮件文件夹。
Send-MgUserMail 包含基本消息
使用以下 PowerShell 脚本发送基本电子邮件。
- 在第 2 行中填写发件人
- 在第第 3 行中填写收件人
- 在第第 4 行中填写电子邮件的主题
- 在第第 5 行中填写电子邮件的正文消息
- 选择第 6 行中的HTML或文本作为消息电子邮件的类型
- 选择true将电子邮件保存在“已发送邮件”文件夹中,或选择“假”以不在第第 7 行行中的“已发送邮件”中保存电子邮件
注意:发件人必须是来自您的租户的电子邮件。
# Email details
$sender = "[email protected]"
$recipient = "[email protected]"
$subject = "Sending with MgUserMail"
$body = "Come and join us at the biggest tech event!"
$type = "HTML" #Or you can choose "Text"
$save = "false" #Or you can choose "true"
# Import MgGraph module
Import-Module Microsoft.Graph.Users.Actions
# Connect to MgGraph with required permissions
Connect-MgGraph -Scopes 'Mail.Send', 'Mail.Send.Shared'
$params = @{
Message = @{
Subject = $subject
Body = @{
ContentType = $type
Content = $body
}
ToRecipients = @(
@{
EmailAddress = @{
Address = $recipient
}
}
)
}
SaveToSentItems = $save
}
# Send message
Send-MgUserMail -UserId $sender -BodyParameter $params
使用上述脚本,如果您尚未使用正确的权限连接到 Microsoft Graph,您可以获得 Microsoft 登录提示。请记住使用许可邮箱登录。
注意:如果其中一位用户拥有具有代理发送或代表发送权限的许可邮箱,您也可以使用未经许可的共享邮箱进行签名。
带文本的基本电子邮件将如下例所示。
如果您想获得有关该邮件的更详细信息,您可以查看原始邮件。
使用抄送和密件抄送发送 MgUserMail
使用以下 PowerShell 脚本通过抄送和密件抄送发送电子邮件。
- 在第 2 行中填写发件人
- 在第第 3 行中填写收件人
- 在第第 4 行中填写抄送收件人
- 在第 5 行中填写密件抄送收件人
- 在第第 6 行中填写电子邮件的主题
- 在第第 7 行中填写电子邮件的正文消息
- 选择 HTML 或 文本 作为第 第 8 行 行中邮件的类型
- 选择true将电子邮件保存在已发送邮件文件夹中,或选择false不将电子邮件保存在第第9行的已发送邮件中
# Email details
$sender = "[email protected]"
$recipient = "[email protected]"
$ccrecipient = "[email protected]"
$bccrecipient = "[email protected]"
$subject = "Sending with MgUserMail"
$body = "Come and join us at the biggest tech event!"
$type = "HTML" #Or you can choose "Text"
$save = "false" #Or you can choose "true"
# Import MgGraph module
Import-Module Microsoft.Graph.Users.Actions
# Connect to MgGraph with required permissions
Connect-MgGraph -Scopes 'Mail.Send', 'Mail.Send.Shared'
$params = @{
Message = @{
Subject = $subject
Body = @{
ContentType = $type
Content = $body
}
ToRecipients = @(
@{
EmailAddress = @{
Address = $recipient
}
}
)
CcRecipients = @(
@{
EmailAddress = @{
Address = $ccrecipient
}
}
)
BccRecipients = @(
@{
EmailAddress = @{
Address = $bccrecipient
}
}
)
}
SaveToSentItems = $save
}
# Send message
Send-MgUserMail -UserId $sender -BodyParameter $params
电子邮件的结果通过抄送和密件抄送收件人发送。
注意:密件抄送不会显示,您必须在密件抄送收件人的收件箱中检查。
发送 MgUserMail 带附件
您还可以发送带有附件的邮件。因此,您需要在 C:\temp 中创建一个附件文件。
请按照以下步骤创建附件文件:
- 输入文本欢迎!
- 将其命名为文件
- 将其另存为.txt,路径为C:\temp
使用以下 PowerShell 脚本发送包含抄送、密件抄送和附件文件的电子邮件。
- 在第 2 行中填写发件人
- 在第第 3 行中填写收件人
- 在第第 4 行中填写抄送收件人
- 在第 5 行中填写密件抄送收件人
- 在第第 6 行中填写电子邮件的主题
- 在第第 7 行中填写电子邮件的正文消息
- 在第第 8 行中填写保存 .txt 文件的附件路径
- 选择 HTML 或 文本 作为第 第 11 行 行中邮件的类型
- 选择true将电子邮件保存在“已发送邮件”文件夹中,选择“假”则不在第第 12 行行中的“已发送邮件”中保存电子邮件
# Email details
$sender = "[email protected]"
$recipient = "[email protected]"
$ccrecipient = "[email protected]"
$bccrecipient = "[email protected]"
$subject = "Sending with MgUserMail"
$body = "Come and join us at the biggest tech event!"
$attachmentpath = "C:\temp\file.txt"
$attachmentmessage = [Convert]::ToBase64String([IO.File]::ReadAllBytes($AttachmentPath))
$attachmentname = (Get-Item -Path $attachmentpath).Name
$type = "HTML" #Or you can choose "Text"
$save = "false" #Or you can choose "true"
# Import MgGraph module
Import-Module Microsoft.Graph.Users.Actions
# Connect to MgGraph with required permissions
Connect-MgGraph -Scopes 'Mail.Send', 'Mail.Send.Shared'
$params = @{
Message = @{
Subject = $subject
Body = @{
ContentType = $type
Content = $body
}
ToRecipients = @(
@{
EmailAddress = @{
Address = $recipient
}
}
)
CcRecipients = @(
@{
EmailAddress = @{
Address = $ccrecipient
}
}
)
BccRecipients = @(
@{
EmailAddress = @{
Address = $bccrecipient
}
}
)
Attachments = @(
@{
"@odata.type" = "#microsoft.graph.fileAttachment"
Name = $attachmentname
ContentType = "text/plain"
ContentBytes = $attachmentmessage
}
)
}
SaveToSentItems = $save
}
# Send message
Send-MgUserMail -UserId $sender -BodyParameter $params
使用抄送、密送收件人和您创建的附件文件发送的电子邮件的结果。
注意:密件抄送不会显示,您必须在密件抄送收件人的收件箱中检查。
使用 Send-MgUserMail 自动发送电子邮件
您还可以发送电子邮件,而无需插入凭据或收到 MFA 提示。为此,您需要在 Azure AD 中注册应用程序。然后,您需要在 Azure AD 中为您的应用程序创建客户端密钥。最后,您必须为这个新创建的应用程序分配权限。
1. 在Azure中注册新应用程序
您必须注册应用程序才能获取应用程序(客户端)ID 和目录(租户)ID。
- 登录 Microsoft Entra 管理中心并输入您的凭据
- 展开身份
- 单击应用程序 > 应用程序注册
- 点击新注册
- 将您的应用程序命名为MgUserMail
- 选择仅此组织目录中的帐户(- 单个租户)
- 点击注册
- 复制应用程序(客户端)ID并将其粘贴到记事本中
- 复制目录(租户)ID并将其粘贴到记事本中
稍后在连接 Microsoft Graph 时将需要这些值。
2. 为新应用程序创建客户端密钥
转到 Azure AD 中的 MSGraph 机器人应用程序概述页面。
要在 Microsoft Entra 门户中为您的应用程序创建客户端密钥,请按照下列步骤操作:
- 单击证书和机密
- 单击客户端密钥 > 新客户端密钥
- 输入描述
- 选择到期日期
- 点击添加
注意:客户端密钥的有效期最长为 24 个月(2 年)。您可以使用 PowerShell 在 Azure AD 中创建无限的客户端密钥。
- 复制客户端密钥值并保存
注意: 除非在创建后立即查看客户端密钥值,否则无法查看。请记住在离开页面之前保存创建的密码。
3.分配API权限
您已注册一个新应用程序并为此应用程序创建了客户端密钥。现在我们需要为 MgUserMail 应用程序选择 API 权限。
所需时间:8 分钟
如何为新创建的应用程序分配API权限。
分配 API 权限
点击API 权限
点击添加权限请求 API 权限
在 Microsoft API 选项卡下 >
单击Microsoft Graph选择应用程序权限
点击应用程序权限
搜索User.Read.All
选择用户> User.Read.All
单击添加权限授予管理员同意
点击授予 a-d 管理员同意
点击是已成功授予管理员对所请求权限的同意
查看下方的绿色复选标记状态
4. 使用 Send-MgUserMail 发送自动电子邮件
我们将发送一封自动电子邮件,其中包含抄送收件人、密件抄送收件人和附件文件。请记住创建附件.txt 文件并将其保存在C:\temp。
注意:如果您想发送基本的自动电子邮件,请在命令行前使用井号标签 (#) 以排除某些选项。
您需要将以下参数更改为您自己的值。
- 在第第 2 行中输入应用程序(客户端)ID
- 在第 第 3 行中输入目录(租户)ID
- 在第第 4 行中输入客户端密钥
- 在第 25 行中输入发件人
- 在第第 26 行中输入收件人
- 在第第 27 行中输入抄送收件人
- 在第第 28 行中输入密件抄送收件人
- 在第第 29 行中输入电子邮件的主题
- 在第第 30 行中输入电子邮件的正文
- 在第第 31 行中输入附件路径
- 选择第 34 行中的HTML或文本作为消息电子邮件的类型
- 选择true将电子邮件保存在“已发送邮件”文件夹中,或选择“假”以不在第第 35 行行中的已发送邮件中保存电子邮件
运行以下 PowerShell 脚本。
# Configuration
$ClientId = "687ec903-4cec-4ebb-a7b1-720e93edfe85"
$TenantId = "a2ff010e-0e03-4c56-8863-2ae7f07876dd"
$ClientSecret = "hhc8Q~juTTuU~qn9Y286lcchlSnP6EAYlFl-lcHo"
# Convert the client secret to a secure string
$ClientSecretPass = ConvertTo-SecureString -String $ClientSecret -AsPlainText -Force
# Create a credential object using the client ID and secure string
$ClientSecretCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $ClientId, $ClientSecretPass
# Connect to Microsoft Graph with Client Secret
Connect-MgGraph -TenantId $TenantId -ClientSecretCredential $ClientSecretCredential
# Email details
$sender = "[email protected]"
$recipient = "[email protected]"
$ccrecipient = "[email protected]"
$bccrecipient = "[email protected]"
$subject = "Sending with MgUserMail (Client Secret)"
$body = "Come and join us at the biggest tech event!"
$attachmentpath = "C:\temp\file.txt"
$attachmentmessage = [Convert]::ToBase64String([IO.File]::ReadAllBytes($AttachmentPath))
$attachmentname = (Get-Item -Path $attachmentpath).Name
$type = "HTML" #Or you can choose "Text"
$save = "false" #Or you can choose "true"
# Import MgGraph module
Import-Module Microsoft.Graph.Users.Actions
$params = @{
Message = @{
Subject = $subject
Body = @{
ContentType = $type
Content = $body
}
ToRecipients = @(
@{
EmailAddress = @{
Address = $recipient
}
}
)
CcRecipients = @(
@{
EmailAddress = @{
Address = $ccrecipient
}
}
)
BccRecipients = @(
@{
EmailAddress = @{
Address = $bccrecipient
}
}
)
Attachments = @(
@{
"@odata.type" = "#microsoft.graph.fileAttachment"
Name = $attachmentname
ContentType = "text/plain"
ContentBytes = $attachmentmessage
}
)
}
SaveToSentItems = $save
}
# Send message
Send-MgUserMail -UserId $sender -BodyParameter $params
使用客户端密钥发送的电子邮件的结果,包括抄送、密件抄送收件人和附件文件。
注意:密件抄送不会显示,您必须在密件抄送收件人的收件箱中检查。
您可以使用 Send-MgUserMail cmdlet 成功发送电子邮件。
了解更多:导出 Microsoft 365 用户许可证 »
结论
您了解了如何使用 Send-MgUserMail PowerShell cmdlet 发送 Exchange Online 电子邮件。请记住使用具有“代理发送”或“代表发送”权限的许可邮箱进行签名。如果您不想使用凭据登录,则需要创建一个客户端机密应用程序,以使用 Send-MgUserMail cmdlet 发送自动电子邮件。
您喜欢这篇文章吗?您可能还喜欢配置基于证书的身份验证来运行自动化脚本。不要忘记关注我们并分享这篇文章。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag