【问题标题】:PowerShell Script for Email Notification用于电子邮件通知的 PowerShell 脚本
【发布时间】:2022-01-08 21:24:49
【问题描述】:

我使用 FileZilla 服务器作为 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”之间有什么关系,我在另一个网站上找到了上述解决方案,它们是不同的,它们应该不一样吗?

【问题讨论】:

    标签: powershell email smtp smtpclient filezilla


    【解决方案1】:

    确保您了解该脚本实际上与您的 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 地址和密码。

    【讨论】:

    • 嘿 - 这是有道理的,谢谢。我已经做出了改变。所以“$EmailFrom =”与我将放入“SmtpClient.Credentials”的电子邮件不同?
    • 通常它们是相同的。
    • 非常感谢!剩下要做的就是在 gmail 帐户(专门为此创建)上允许不太安全的应用程序访问,它工作正常,接受答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多