当前位置:首页 > 电脑教程 > 正文

如何通过CMD命令轻松实现邮件发送?

通过cmd命令发送邮件可使用PowerShell的Send-MailMessage命令,需指定发件人、收件人、SMTP服务器及凭据,示例命令:Send-MailMessage -To “接收邮箱” -From “发送邮箱” -Subject “主题” -Body “内容” -SmtpServer “smtp.example.com” -Credential (Get-Credential),需提前配置SMTP服务权限。

在Windows系统中,通过CMD命令或PowerShell脚本发送邮件,可以用于自动化通知、脚本集成等场景,以下是4种实用方法,包含详细步骤和注意事项,适用于不同需求。


使用Telnet命令(基础SMTP协议)

适用场景:测试邮件服务器连通性
前置条件

  • 开启Telnet客户端(控制面板→程序→启用或关闭Windows功能→勾选Telnet Client)
  • 已知SMTP服务器地址、端口(如Gmail的smtp.gmail.com:587)

操作步骤

telnet smtp.example.com 25
HELO yourdomain.com
AUTH LOGIN
[输入Base64编码的用户名]
[输入Base64编码的密码]
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
Subject: 测试邮件
这是通过Telnet发送的测试邮件内容。
.
QUIT

注意

  • 密码需用Base64编码(可用在线工具转换)
  • 部分邮箱需开启SMTP服务(如Gmail需启用”低安全性应用访问”)
  • 端口25可能被运营商屏蔽,可尝试587或465(SSL)

通过PowerShell脚本(推荐)

适用场景:Windows 7及以上系统,支持SSL加密
脚本示例

如何通过CMD命令轻松实现邮件发送?  第1张

$EmailFrom = "sender@example.com"
$EmailTo = "recipient@example.com"
$Subject = "系统通知"
$Body = "服务器运行状态正常"
$SMTPServer = "smtp.example.com"
$SMTPPort = 587
$Username = "sender@example.com"
$Password = "your_password" | ConvertTo-SecureString -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential($Username, $Password)
Send-MailMessage -From $EmailFrom -To $EmailTo -Subject $Subject -Body $Body `
-SmtpServer $SMTPServer -Port $SMTPPort -UseSsl -Credential $Credential

参数说明

  • -UseSsl:强制加密传输
  • ConvertTo-SecureString:保护密码安全
  • 保存为.ps1文件后,右键选择”使用PowerShell运行”

使用Blat工具(第三方开源软件)

适用场景:频繁发送需求,支持附件
操作流程

  1. 下载Blat:访问官网下载并解压到C:blat
  2. 配置SMTP:
    blat -install smtp.example.com sender@example.com 3 587
  3. 发送邮件:
    blat -to recipient@example.com -subject "报告附件" -body "详情请查收附件" -attach C:report.pdf

参数说明

  • -install后的数字3表示尝试次数
  • 支持多个附件:-attach "file1.txt,file2.jpg"

VBS脚本方法(兼容旧系统)

适用场景:Windows XP/2003等旧版本系统
脚本代码

Set objEmail = CreateObject("CDO.Message")
objEmail.From = "admin@example.com"
objEmail.To = "user@example.com"
objEmail.Subject = "旧系统通知"
objEmail.Textbody = "此邮件通过VBS脚本发送"
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.example.com"
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Send

保存为.vbs文件后双击运行。


▍安全注意事项

  1. 密码保护:避免在脚本中明文存储密码,建议:
    • 使用Windows Credential Manager
    • 创建应用专用密码(如Gmail两步验证用户)
  2. 反垃圾策略
    • 控制发送频率(商业邮箱每日上限约100封)
    • 添加DKIM/SPF记录
  3. 日志监控:建议记录发送记录到文本文件:
    echo %date% %time% 发送至recipient@example.com >> mail.log

▍常见问题解答

Q1:出现”无法连接到服务器”错误?

  • 检查防火墙是否开放SMTP端口
  • 测试Telnet连接:telnet smtp.example.com 587

Q2:邮件进入垃圾箱?

  • 添加发件人域名解析(MX记录)
  • 减少敏感词如”免费”、”优惠”

Q3:PowerShell提示”禁止运行脚本”?
以管理员身份执行:

Set-ExecutionPolicy RemoteSigned

参考文献

  1. Microsoft PowerShell文档:Send-MailMessage
  2. Blat官方文档:blat.net
  3. SMTP协议标准:RFC 5321
0