PowerShell不使用(默认)身份验证发送SMTP电子邮件

时间:2014-03-04 13:08:41

标签: authentication powershell smtp

我正在尝试使用PowerShell向Exchange服务器发送电子邮件。我的目标是使用普通旧SMTP将邮件传递到Exchange服务器上的本地用户(邮箱)。 Exchange服务器与发送服务器和登录的发送用户位于同一网络和AD域中。

但是,我发送的用户无权访问该Exchange服务器上的电子邮件。 PowerShell似乎默认使用登录的用户凭据发送身份验证。

$smtp = new-object Net.Mail.SmtpClient("exchangeserver.mylan") 
$smtp.Send($emailFrom, $emailTo, $subject, $message)

我尝试在$smtp.UseDefaultCredentials = $false行之前添加$smtp.Send(...但没有成功。

一种解决方案是允许此用户在Exchange服务器上发送邮件。但是,用户将根据运行此脚本的服务进行更改,因此我不希望以这种方式解决。

另一种解决方案是使用$smtp.Credentials = New-Object System.Net.NetworkCredential("DOMAIN\user", "password")(也在$smtp.Send(...行之前)对代码进行硬编码。我也没有运气。

我真正喜欢的解决方案是使用优质的旧版本免费SMTP匿名发送PowerShell中的电子邮件。

2 个答案:

答案 0 :(得分:0)

1)创建新的接收连接器
2)在其上启用匿名身份验证
3)将其锁定到运行脚本的计算机的IP地址

答案 1 :(得分:0)

我意识到这已经过时了,但我很惊讶这里没有答案。我最初很困惑,因为我在C#中编写了一些类似的代码并且它工作得很好。 PowerShell似乎默认使用某人的凭据。我不会假设它是谁运行脚本,但它可能是。

当我构建凭据对象时,我会传入一个用户名和密码的空间,这似乎工作正常。

$credential = New-Object System.Management.Automation.PSCredential (" ", " ")

如果我完全遗漏了凭证部分,那么它将使用某人的凭据或其他内容。到现在为止,我收到了以下消息:

The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.1 Client was not authenticated

我希望这可以帮助有这么奇怪问题的人。

相关问题