You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PowerShell发邮件是否兼容Gmail/Outlook的OAuth2新规范?

你的PowerShell邮件脚本与Gmail、Outlook OAuth2新规范的兼容性分析

你的现有脚本使用System.Net.Mail.SmtpClient结合NetworkCredential的**用户名+密码(或应用专用密码)**认证方式,这种方式并不兼容Gmail、Outlook/Hotmail即将强制执行的OAuth2规范,具体情况如下:

Gmail 兼容性说明

目前Gmail对开启2FA的账号仍允许使用应用专用密码进行SMTP认证,你的脚本暂时还能运行。但一旦Gmail完全切换到强制OAuth2认证,该脚本会直接失效——因为System.Net.Mail.SmtpClient并不原生支持OAuth2认证流程。

Outlook/Hotmail 兼容性说明

从10月开始,Outlook/Hotmail将彻底停用传统的SMTP密码认证,强制要求使用OAuth2。你的现有脚本依赖NetworkCredential的认证方式会直接无法发送邮件,必须切换到OAuth2兼容的实现方案。

兼容OAuth2的解决方案

要适配新规范,需要放弃System.Net.Mail类库,改用支持OAuth2的邮件发送方案:

对于Outlook/Hotmail:使用Microsoft Graph PowerShell模块

微软官方推荐通过Graph API发送邮件,原生支持OAuth2,示例脚本如下:

# 首次运行先安装模块
# Install-Module -Name Microsoft.Graph.Mail -Scope CurrentUser -Force

# 连接到Graph,请求邮件发送权限
Connect-MgGraph -Scopes "Mail.Send"

# 构建邮件内容
$mailParams = @{
    Message = @{
        Subject = "你的邮件主题"
        Body = @{
            ContentType = "Text"
            Content = "邮件正文内容"
        }
        ToRecipients = @(
            @{
                EmailAddress = @{
                    Address = "收件人邮箱地址"
                }
            }
        )
        Attachments = @(
            @{
                "@odata.type" = "#microsoft.graph.fileAttachment"
                Name = "Test.PDF"
                ContentBytes = [System.IO.File]::ReadAllBytes("C:\Temp\Test.PDF")
            }
        )
    }
    SaveToSentItems = $true
}

# 发送邮件
Send-MgUserMail -UserId "你的发件人邮箱地址" -BodyParameter $mailParams

对于Gmail:使用Google Gmail API的.NET库

可以在PowerShell中调用Google.Apis.Gmail.v1库实现OAuth2认证发送邮件,核心步骤为创建OAuth2凭据、构建邮件请求并通过API发送。

内容的提问来源于stack exchange,提问作者niyo66

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 21:04:58