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没成功,大概率是模块安装或代码步骤有误,以下是简化的无附件发送示例:
- 先安装模块(仅需执行一次):
Install-Module -Name MailKit -Scope CurrentUser -Force
- 发送邮件代码:
# 导入模块 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
相关产品推荐
相关产品推荐

