.net 使用Powershell从VMWorkstation发送SMTP邮件时出现问题

.net 使用Powershell从VMWorkstation发送SMTP邮件时出现问题,.net,powershell,smtp,virtualization,vmware-workstation,.net,Powershell,Smtp,Virtualization,Vmware Workstation,我使用以下脚本在运行PowerShell程序时发送电子邮件,它通常运行得非常好: $msg = New-Object System.Net.Mail.MailMessage $msg.From = $from $msg.To.Add($to) $msg.Subject = $subject $msg.Body = $html $msg.IsBodyHtml = $true $smtp = Ne

我使用以下脚本在运行PowerShell程序时发送电子邮件,它通常运行得非常好:

$msg = New-Object System.Net.Mail.MailMessage
        $msg.From = $from
        $msg.To.Add($to)
        $msg.Subject = $subject
        $msg.Body    = $html
        $msg.IsBodyHtml = $true

        $smtp = New-Object System.Net.Mail.SmtpClient($server)
        $smtp.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
        try
        {
            $smtp.Send($msg)
            Write-Host "Email sent to $to without error"        
        } 
        catch 
        {
            $retryCount++           
            Write-Warning "Email failed to send. $_.Exception.Message" 
                     }
问题是,我已经开始在我刚刚设置的VMWorkstation机器中使用此脚本,此时我无法发送电子邮件。下面是我得到的错误:

WARNING: Email failed to send. Exception calling "Send" with "1" argument(s): "The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.1 Client was not authent
icated".Exception.Message
我相信我会出现此错误,因为我使用:

$smtp.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
是这样吗?如果是这样,有没有办法从虚拟机中提取凭据?我使用的是桥接网络,所以我不知道为什么我不能通过那个电话访问它们。我还更改了公司网络的所有域权限


任何洞察都会很有帮助。

如果您使用的是PowerShell v2或更高版本(您应该使用),请改用

系统将提示您输入SMTP服务器的凭据。如果需要重复使用,可以在脚本开头提示用户并将其存储:

$cred = Get-Credential
然后使用
-credential$cred
代替
-credential$(获取凭证)


如果您正在运行的系统已加入到您的域,并且您使用域帐户登录,您应该能够跳过
-credential
参数,因为它将默认为当前用户(您)。

事实证明,我遇到的问题是由于VM未连接到公司域。加入公司领域解决了这个问题

$cred = Get-Credential