none
Exchange 2016 Powershell发送邮件失败 RRS feed

  • 问题

  • HI 工程师您好,

         请问我使用以下代码在powershell中发送邮件失败,错误信息如下:

    $From = "administrator@xx.com"
         $To = "test01@xx.com"
         $Subject = "AD用户和邮箱已创建"                
             $smtpServer = "16-test02.xx.com"
             $smptport= '587'
             $username = "administrator@xx.com"
         $password = "1234"
         $SMTPMessage = New-Object System.Net.Mail.MailMessage($From, $To, $Subject, $Body)
             $SMTPMessage.IsBodyHTML = $true
         $SMTPClient = New-Object Net.Mail.SmtpClient($smtpServer, $SmtpPort) 
    $SMTPClient.EnableSsl = $true
         $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($username, $password); 
         $SMTPClient.Send($SMTPMessage)

    错误信息:

    PS C:\> C:\发送邮件.ps1
    使用“1”个参数调用“Send”时发生异常:“SMTP 服务器要求安全连接或客户端未通过身份验证。 服务器响应为:5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM”
    所在位置 C:\发送邮件.ps1:59 字符: 6
    +      $SMTPClient.Send($SMTPMessage)
    +      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : SmtpException

      
    2021年9月8日 3:27

答案

  • 您好,

    您需要创建一个专用的连接器并给一个连接器配置证书,步骤如下:

    New-ReceiveConnector -Name "587" -TransportRole Frontend -Custom -Bindings 0.0.0.0:587 -RemoteIPRanges 10.33.2.161, 10.33.2.254, 10.20.5.33-10.20.5.34 -AuthMechanism Tls, Integrated, BasicAuth, BasicAuthRequireTLS -PermissionGroups ExchangeUsers
    Get-ExchangeCertificate
    通过以下命令将分配了IIS的证书(不可以是自签名证书)应用到新建的连接器:
    $cert = Get-ExchangeCertificate -Thumbprint <证书的指纹>
    $tlscertificatename = "<i>$($cert.Issuer)<s>$($cert.Subject)"
    Set-ReceiveConnector "server\587" -Fqdn <SMTP 服务器地址> -TlsCertificateName $tlscertificatename
    Set-ReceiveConnector "server\587" -RequireTLS $True

    同时,发件方不能使用Admin账号,您需要使用一个普通用户邮箱来作为发件方。

    此致,

    Kyle Xu


    如果以上回复对您有所帮助,建议您将其“标记为答复”. 如果您对我们的论坛支持有任何的建议,可以通过此邮箱联系我们:tnsf@microsoft.com.

    2021年9月8日 9:39
    版主

全部回复

  • 您好,

    您需要创建一个专用的连接器并给一个连接器配置证书,步骤如下:

    New-ReceiveConnector -Name "587" -TransportRole Frontend -Custom -Bindings 0.0.0.0:587 -RemoteIPRanges 10.33.2.161, 10.33.2.254, 10.20.5.33-10.20.5.34 -AuthMechanism Tls, Integrated, BasicAuth, BasicAuthRequireTLS -PermissionGroups ExchangeUsers
    Get-ExchangeCertificate
    通过以下命令将分配了IIS的证书(不可以是自签名证书)应用到新建的连接器:
    $cert = Get-ExchangeCertificate -Thumbprint <证书的指纹>
    $tlscertificatename = "<i>$($cert.Issuer)<s>$($cert.Subject)"
    Set-ReceiveConnector "server\587" -Fqdn <SMTP 服务器地址> -TlsCertificateName $tlscertificatename
    Set-ReceiveConnector "server\587" -RequireTLS $True

    同时,发件方不能使用Admin账号,您需要使用一个普通用户邮箱来作为发件方。

    此致,

    Kyle Xu


    如果以上回复对您有所帮助,建议您将其“标记为答复”. 如果您对我们的论坛支持有任何的建议,可以通过此邮箱联系我们:tnsf@microsoft.com.

    2021年9月8日 9:39
    版主
  • HI Kyle,

        多谢回复。

    是因为发件人使用了admin导致发不了,我换成普通用户即可。

    2021年9月9日 2:47