我正在使用nant发送邮件,它工作正常 - 类似
<mail
from="Test@b.c"
tolist="A@b.c"
subject="Test"
mailhost="myhost.mydomain.com"
isbodyhtml="true"
message= "${Test}">
</mail>
我没有必要使用任何类型的身份验证。
现在使用PowerShell时,似乎我被迫使用身份验证 - 这样的事情会失败:
Send-MailMessage -To $to -From $from -Subject "Test" –Body “Test (body) -SmtpServer "myhost.mydomain.com"
我会收到以下消息:
Send-MailMessage : No credentials are available in the security package
如果服务器支持,我是否错过了在不指定凭据的情况下发送邮件的方法?
编辑: 我也尝试过这里的答案发送匿名邮件,但它只是超时: send anonymous mails using powershell
答案 0 :(得分:1)
使用Powershell v1方法发送邮件无需身份验证即可正常工作,如here
所示我的Powershell版本是5但这显然是要走的路,除非有人有另一个想法。
$smtpServer = "ho-ex2010-caht1.exchangeserverpro.net"
$smtpFrom = "reports@exchangeserverpro.net"
$smtpTo = $to
$messageSubject = $subject
$messageBody = $body
$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($smtpFrom,$smtpTo,$messagesubject,$messagebody)
答案 1 :(得分:0)
我正在寻找另一个问题并在这里找到这个问题...... 正如@AngelicCore 已经解释了一种方法, 如果有人使用 Outlook,这是另一个... 邮件将出现在您的发件箱中。
使用 Outlook 对象
Try
{
#Email structure
$Outlook = New-Object -ComObject Outlook.Application
$Mail = $Outlook.CreateItem(0)
#Email Recipients
$Mail.To = "abc@domain.com;xyz@domain.com"
$Mail.Cc = "tuv@domain.com; pqr@domain.com"
#Email Subject
$date = Get-Date -Format g
$Mail.Subject = "Subject here $date"
#Email Body
$Mail.Body = "Body Here"
#Html Body
$Mail.HTMLBody == "<html> HTML Body Here </html>"
#Email Attachment
$file = "C:\path\xyz.txt"
$Mail.Attachments.Add($file)
$Mail.Send()
Write-Host -foreground green "Mail Sent Successfully"
}
Catch
{
write-host -foreground red $error[0].Exception.Message
}
pause
exit