无需身份验证即可通过powershell发送邮件

时间:2017-11-02 19:31:53

标签: powershell smtp sendmail

我正在使用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

2 个答案:

答案 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