【问题标题】:powershell email smtp with startls带有 starttls 的 powershell 电子邮件 smtp
【发布时间】:2014-05-11 13:01:52
【问题描述】:

需要通过带有凭据和 starttls 的私人 smtp 服务器发送电子邮件。看了很多教程,仍然无法建立 starttls 通信。

我的代码:

 $smtpServer = "smtp.xserver.cz"

 #Creating a Mail object
 $msg = new-object Net.Mail.MailMessage

 #Creating SMTP server object
 $smtp = new-object Net.Mail.SmtpClient($smtpServer, 25)#587 works
 $smtp.EnableSsl = $false
 $smtp.Credentials = New-Object System.Net.NetworkCredential("myuser@xserver.cz","mypassword"); #yes, correct login, tried via Thunderbird


 #Email structure 
 $msg.From = "info@xserver.cz"
 $msg.To.Add("testtest@gmail.com")

 $msg.subject = "subject"


 $msg.IsBodyHTML = $true
 $msg.body = "AAA"+"<br /><br />"

 $ok=$true
 try{
        $smtp.Send($msg)
        Write-Host "SENT"

 }
 catch {
    Write-Host "`tNOT WORK !!!!!"
    $error[0]
    $_.Exception.Response
    $ok=$false
 }
 finally{
    $msg.Dispose()

 }
 if($ok){
    Write-Host "`tEVERYTHING OK"
 }

需要使用 .Net 对象和类,而不是第三方库,或者 Powershell 中的 Send-MailMessage,因为 Send-MailMessage 没有附件发送选项。

【问题讨论】:

    标签: powershell


    【解决方案1】:

    您没有获得 TLS 连接,因为您已将 EnableSsl 设置为 $false。

    不确定您从哪里得到 Send-MailMessage 没有附件发送选项的想法。使用 Send-MailMailMessage 发送附件非常简单。它接受一个或多个文件名作为来自管道的附件,或通过 -Attachments 参数。

    【讨论】:

    • 我也尝试将 enableSSL 设置为 true,但不确定使用了哪个端口...请帮助我编写代码。抱歉,我的错误 - 由于将凭据发送到我的私人 smtp 服务器,因此无法接受 Send-MailMessage。
    • 通常 TLS 在同一个端口 (25) 或 587 上实现。Send-MailMessage 也有一个 -Credential 参数。
    • 我尝试了 25 和 587,没有任何效果。是的,-Credentials 参数是有的,但它是在 Windows 上运行脚本的凭据,而不是服务器的远程连接。
    • 查看这个帖子:stackoverflow.com/questions/12460950/… 至于 TLS,它的端口将在邮件服务器上配置,所以我不能告诉你它是什么(以及它是否甚至支持 TLS) .
    • 我尝试通过 Thunderbird 登录。在 smtp 上配置 noTLS 时,外发电子邮件出现错误。但是当我设置 StartTLS 时,一切正常。所以,我可以看到端口 25,StartTLS 配置,但仍然无法通过 Powershell 建立连接。我也试过 PhpMailer 库。 Thudenrbird 怎么可能发送电子邮件而我的脚本不行?
    猜你喜欢
    • 2015-11-27
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多