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

PowerShell中替代过时Send-MailMessage向Office365发邮件的方案咨询

简单替代PowerShell中已弃用的Send-MailMessage的邮件发送方法

方法1:使用.NET原生System.Net.Mail类(无需额外安装模块)

这是适合新手的轻量方案,不用安装第三方模块,直接调用PowerShell支持的.NET类就能实现无附件邮件发送:

# 配置核心参数,替换成你自己的邮件服务商信息
$smtpServer = "smtp.example.com" # 比如smtp.qq.com、smtp.gmail.com
$smtpPort = 587 # 多数服务商的TLS加密端口
$senderEmail = "your-email@example.com" # 发件人邮箱
$senderPassword = "your-app-password" # 注意:QQ/Gmail等需要用应用专用授权码,不是登录密码
$recipientEmail = "recipient@example.com" # 收件人邮箱
$emailSubject = "测试邮件"
$emailBody = "Hello World"

# 初始化SMTP客户端
$smtpClient = New-Object System.Net.Mail.SmtpClient($smtpServer, $smtpPort)
$smtpClient.EnableSsl = $true
$smtpClient.Credentials = New-Object System.Net.NetworkCredential($senderEmail, $senderPassword)

# 创建邮件消息
$mailMessage = New-Object System.Net.Mail.MailMessage($senderEmail, $recipientEmail, $emailSubject, $emailBody)

# 发送并处理结果
try {
    $smtpClient.Send($mailMessage)
    Write-Host "邮件发送成功!"
} catch {
    Write-Host "邮件发送失败:$_"
}

# 释放资源
$mailMessage.Dispose()
$smtpClient.Dispose()

方法2:修正MimeKit/MailKit的使用方式(如果想尝试第三方库)

如果之前用MimeKit没成功,大概率是模块安装或代码步骤有误,以下是简化的无附件发送示例:

  1. 先安装模块(仅需执行一次):
Install-Module -Name MailKit -Scope CurrentUser -Force
  1. 发送邮件代码:
# 导入模块
Import-Module MailKit

# 配置参数
$smtpServer = "smtp.example.com"
$smtpPort = 587
$senderEmail = "your-email@example.com"
$senderPassword = "your-app-password"
$recipientEmail = "recipient@example.com"

# 构建邮件内容
$message = [MimeKit.MimeMessage]::new()
$message.From.Add([MimeKit.MailboxAddress]::new("发件人名称", $senderEmail))
$message.To.Add([MimeKit.MailboxAddress]::new("收件人名称", $recipientEmail))
$message.Subject = "测试邮件"
$message.Body = [MimeKit.TextPart]::new("plain") { Text = "Hello World" }

# 发送邮件
try {
    using ($client = [MailKit.Net.Smtp.SmtpClient]::new()) {
        $client.Connect($smtpServer, $smtpPort, [MailKit.Security.SecureSocketOptions]::StartTls)
        $client.Authenticate($senderEmail, $senderPassword)
        $client.Send($message)
        $client.Disconnect($true)
        Write-Host "邮件发送成功!"
    }
} catch {
    Write-Host "邮件发送失败:$_"
}

关键注意点

  • 不同邮件服务商的SMTP配置不同:比如QQ邮箱需要先开启POP3/SMTP服务,再生成授权码;Gmail要启用两步验证后生成应用专用密码。
  • 测试时优先检查SMTP地址、端口、凭据是否正确,这些是最常见的失败原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:55:19