【问题标题】:Trouble sending email using Powershell使用 Powershell 发送电子邮件时遇到问题
【发布时间】:2012-04-06 03:12:19
【问题描述】:

我已经运行了以下脚本:

PS C:\> Send-MailMessage -To <EmailAddress1> -From <EmailAddress2> -Body "This is a test" -Subject "TEST MAIL" -SmtpServer <INTERNAL IP OF SMTP SERVER>

我收到以下错误:

Send-MailMessage : Unable to read data from the transport connection: net_io_connectionclosed.

At line:1 char:17
+ Send-MailMessage <<<<  -To <EmailAddress1> -From <EmailAddress2> -Body "This is a test" -Subject "TEST MAIL" -SmtpServer <INTERNAL IP OF SMTP SERVER>
+ CategoryInfo: InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-Mail Message], SmtpException
+ FullyQualifiedErrorId : SmtpException,Microsoft.PowerShell.Commands.SendMailMessage`

我知道我需要权限才能通过 SMTP 服务器从本地计算机发送电子邮件,据我所知,我已被授予这些权限。

有人能帮我指出正确的方向吗?

最终目标是能够将电子邮件作为某些 Powershell 脚本的一部分发送。

谢谢!

【问题讨论】:

标签: email powershell exchange-server


【解决方案1】:

我更喜欢 Net.Mail.SmtpClient 发送电子邮件的方法。该脚本将发送作为参数传递的文件的内容。

$emailFrom = "AUTOMATED_PRERUN@somehost.com"
$emailTo = "somebody@somehost.com"
$subject = "TEST"
get-content $Args[0] | %{$Body+= " {0} `n" -f $_}
$smtpServer = "mailserver.somehost.com"
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $body)

不过,您的错误听起来更像是某种类型的网络问题。

您可能需要检查您是否可以访问服务器上的 SMTP 端口:

https://docs.microsoft.com/en-us/Exchange/mail-flow/test-smtp-with-telnet

【讨论】:

  • 感谢您的帮助。我将不得不等待管理员可用。我尝试远程登录到服务器;无法连接。我猜有一些权限设置不正确。一旦我得到这个工作,我会考虑使用你的方法,虽然你的第 4 行代码对我来说有点不清楚。我接受你的回答。再次感谢!
  • 在第 4 行代码中,我将文件内容转储到电子邮件正文中。 $Args[0] 包含我传递给脚本的文件名。
  • 正如 Send-MailMessage 的错误消息所示,它也“只是”使用 System.Net.Mail.SmtpClient 来完成它的工作。
【解决方案2】:

可能您的防病毒文件服务正在锁定邮件传递。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-18
    • 2022-08-18
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2016-02-04
    • 1970-01-01
    相关资源
    最近更新 更多