.net 使用Powershell从VMWorkstation发送SMTP邮件时出现问题
我使用以下脚本在运行PowerShell程序时发送电子邮件,它通常运行得非常好:.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
$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