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

FileZilla Server上传触发的PowerShell邮件通知脚本无法发信如何解决

问题排查与解决方案

一、邮件发送失败的原因及修复方法

  • SMTP配置错误:你当前填写的$SMTPServer = "127.0.0.1"、端口21是本地FTP服务的地址和端口,和邮件服务完全无关。如果使用Gmail发送邮件,正确配置为:
    $SMTPServer = "smtp.gmail.com"
    $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
    
  • 代码语法错误:New-Object和System.Net.NetworkCredential分两行写没有续行标识,PowerShell会将其识别为两个独立命令,导致凭证未正确赋值,需要合并为一行或者添加续行符:
    # 正确写法1:合并为一行
    $SMTPClient.Credentials = New-Object System.Net.NetworkCredential("GMAIL_ADDRESS", "GMAIL_PASSWORD")
    # 正确写法2:添加续行符
    $SMTPClient.Credentials = New-Object `
    System.Net.NetworkCredential("GMAIL_ADDRESS", "GMAIL_PASSWORD")
    
  • Gmail认证规则问题:Gmail早已禁止使用账号普通密码直接登录SMTP服务,你需要先为Google账号开启两步验证,之后生成应用专用密码,替换掉GMAIL_PASSWORD的取值才能正常认证。
  • 排查小技巧:修改配置后可手动在PowerShell中执行该脚本,查看具体的报错信息,自动触发时窗口闪退无法展示报错,会导致问题定位困难。

二、关于SENDER_EMAIL和GMAIL_ADDRESS的关联说明

两个值必须完全一致,Gmail SMTP服务不允许使用与认证账号不一致的发件人地址发送邮件,否则请求会被直接拦截。

三、修改后可直接使用的完整脚本

$EmailFrom = "你的Gmail地址"
$EmailTo = "收件人邮箱"
$Subject = "New File Uploaded to FileZilla"
$Body = "A new file has been uploaded to the FTP server on FileZilla"

$SMTPServer = "smtp.gmail.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("你的Gmail地址", "你生成的Gmail应用专用密码")

$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:45:02