我正试图使用PowerShell将电子邮件发送到Exchange服务器。我的目标是使用普通的旧SMTP将消息传递给Exchange服务器上的本地用户(邮箱)。 Exchange服务器位于与发送服务器相同的网络和AD域中,并且与登录的发送用户位于同一个网络和AD域中。PowerShell发送没有(默认)身份验证的SMTP电子邮件
但是,我发送的用户无权访问该Exchange服务器上的电子邮件。 PowerShell似乎默认使用已登录的用户凭据发送身份验证。
$smtp = new-object Net.Mail.SmtpClient("exchangeserver.mylan") $smtp.Send($emailFrom, $emailTo, $subject, $message)
我曾尝试$smtp.Send(...
线没有成功之前添加$smtp.UseDefaultCredentials = $false
。
一个解决方案是允许此用户在Exchange服务器上发送邮件。但是,用户将根据运行此脚本的服务而改变,所以我不想这样解决。
另一种解决方案是使用类似$smtp.Credentials = New-Object System.Net.NetworkCredential("DOMAIN\user", "password")
的硬编码凭证(也在$smtp.Send(...
行之前)。我也没有运气。
我真的很喜欢的解决方案是只使用良好的旧auth免费SMTP在PowerShell中发送电子邮件。
您运行的是哪个版本的Exchange?该脚本是否可以从Exchange服务器上运行? – mjolinor
不知道什么Exchange版本正在运行(并且不应该是相关的)。脚本无法从Exchange服务器运行。高安全性的环境,除了让它工作,几乎没有什么可做的。 :) –
Exchange服务器默认情况下不会执行匿名中继(至少从5.5开始)。如果您希望使用接收连接器进行匿名中继,则必须在服务器上进行修复。如果脚本在Exchange服务器上运行,则可以使用localhost,绕过接收连接器权限。 – mjolinor