我一直使用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 #...
它有效,但这是获取匿名邮件的正确方法并发送匿名邮件吗?
答案 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