以PowerShell身份发送邮件作为匿名用户

时间:2014-02-18 10:42:55

标签: email powershell powershell-v3.0

我一直使用cmdlet Send-MailMessage而未指定任何-Credential。现在我需要使用匿名用户发送邮件。我找到的解决方法是这段代码

$pass = ConvertTo-SecureString "anyString"-AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList "NT AUTHORITY\ANONYMOUS LOGON",$pass
Send-MailMessage -Credential $cred #...

它有效,但这是获取匿名邮件的正确方法并发送匿名邮件吗?

2 个答案:

答案 0 :(得分:2)

您可以从任何地址发送邮件,这取决于接收邮件服务器是否可以验证是否可以验证发送用户。

例如,如果您从anon@microsoft.com发送并且microsoft没有该帐户,或者他们有SPF记录来指示发送邮件服务器是否有效,那么接收邮件服务器可能(并非总是)拒绝它。

只需确保您的电子邮件用户确实存在且拥有有效的域名...您可以发送匿名@或noreply @或任何您想要的内容。

答案 1 :(得分:1)

好的,从评论中我们知道我们正在处理Exchange服务器。是否进行匿名中继取决于接收连接器的配置。但这些限制仅适用于网络连接。如果在Exchange服务器上运行Send-MailMessage并使用“LocalHost”作为SMTPServer,则它不会通过接收连接器,因此这些限制不适用。

如果在Exchange服务器上启用了远程处理,则可以使用该服务器执行本地调用以发送电子邮件,而无需修改接收连接器配置:

$EmailParams =
    @{
      To         = '<Email To>'
      From       = '<Email From>'
      Subject    = '<Email Subject>'
      Body       = '<Email Body>'
      SMTPServer = 'localhost'
     }

  $Scriptblock = [Scriptblock]::Create(
   "Send-MailMessage $(&{$args} @EmailParams) ")
 Invoke-Command -ScriptBlock $Scriptblock -ComputerName ExchangeServer