用于电子邮件通知的 PowerShell 脚本

PowerShell Script for Email Notification

我正在使用 FileZilla Server 作为 FTP。我想创建一个 PowerShell 脚本,它会在文件上传后立即发送电子邮件。

这篇文章的知识我一直在使用:https://richjenks.com/filezilla-email-notifications/

下面是我的fn.ps1文件的代码

$EmailFrom = "SENDER_EMAIL"
$EmailTo = "RECIPIENT_EMAIL"
$Subject = "New File Uploaded to FileZilla"
$Body = "A new file has been uploaded to the FTP server on FileZilla"

$SMTPServer = "127.0.0.1"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 21)
$SMTPClient.EnableSsl = $true

$SMTPClient.Credentials = New-Object 
System.Net.NetworkCredential("GMAIL_ADDRESS", "GMAIL_PASSWORD");

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

唯一的问题是实际上没有发送电子邮件?我可以看到 PowerShell 在文件上传后短暂弹出,因此它在文件上传时 运行,但实际上没有电子邮件发送到任何地方。

如有任何帮助,我们将不胜感激。

编辑:我不完全确定“SENDER_EMAIL”和“GMAIL_ADDRESS”之间的关系是什么,我在另一个网站上找到了上述解决方案,它们是不同的,这些不应该是一样吗?

确保您了解该脚本实际上与您的 FTP 服务器无关。它只是一个发送固定电子邮件的普通 PowerShell 脚本。所以脚本中的所有内容都与您的 SMTP 邮件服务器相关,而不是您的 FTP 服务器。所以...

  • SmtpClient constructor 是您的 SMTP 邮件服务器的地址。您似乎正在使用 FTP 服务器的地址。

    $SMTPServer = "127.0.0.1"
    $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 21)
    

    检查您基于此的示例。他们使用 smtp.gmail.com:587.

  • 同样,进入 SmtpClient.Credentials 的是您的 SMTP 邮件服务器的凭据。所以一些真正的价值,而不是像这样的占位符:

    $SMTPClient.Credentials = New-Object 
    System.Net.NetworkCredential("GMAIL_ADDRESS", "GMAIL_PASSWORD");
    

    对于 Gmail,它们将是您的 Gmail 地址和密码。