发送电子邮件时出现PowerShell错误

发送电子邮件时出现PowerShell错误,powershell,smtpclient,Powershell,Smtpclient,我将使用以下Powershell脚本发送电子邮件: $smtpServer = "smtp.live.com" $smtpPort = "465" $credential = [Net.NetworkCredential](Get-Credential) $smtpClient = New-Object System.Net.Mail.SmtpClient $smtpServer, $smtpPort $smtpClient.EnableSsl=$true $smtpClient.UseDef

我将使用以下Powershell脚本发送电子邮件:

$smtpServer = "smtp.live.com"
$smtpPort = "465"
$credential = [Net.NetworkCredential](Get-Credential)

$smtpClient = New-Object System.Net.Mail.SmtpClient $smtpServer, $smtpPort
$smtpClient.EnableSsl=$true
$smtpClient.UseDefaultCredentials=$false
$smtpClient.Credentials= $credential

$smtpTo = "existing_email@hotmail.com"
$smtpFrom = "email@hotmail.com"
$messageSubject = "Testing Mail" 
$messageBody = "Hi, This is a Test"

$message = New-Object System.Net.Mail.MailMessage $smtpFrom, $smtpTo, $messageSubject, $messageBody

try
{
  $smtpClient.Send($message)
  Write-Output "Message sent."
}
catch
{
  $_.Exception.Message
  Write-Output "Message send failed."
}
但我收到了这个错误:

+ CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,mail.ps1

Exception calling "Send with "1" arguments" Failure Sending mail

此代码有什么问题?

您尚未定义
$smtpFrom
(发送电子邮件的地址)。另外,建议您使用PowerShell 2.0提供的
Send-MailMessage
cmdlet

这段代码在smtp.live.com
和端口
587
SSL

$SmtpServer = 'smtp.live.com'
$SmtpUser = 'your_username@outlook.com'
$smtpPassword = 'your_password'
$MailTo = 'your_to_mail@example.com'
$MailFrom = 'your_username@outlook.com'
$MailSubject = "Test using $SmtpServer" 
$Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $SmtpUser, $($smtpPassword | ConvertTo-SecureString -AsPlainText -Force) 
Send-MailMessage -To "$MailTo" -from "$MailFrom" -Subject $MailSubject -SmtpServer $SmtpServer -Credential $Credentials -UseSsl -Port 587 

您尚未定义
$smtpFrom
(发送电子邮件的地址)。另外,建议您使用PowerShell 2.0提供的
Send-MailMessage
cmdlet

这段代码在smtp.live.com
和端口
587
SSL

$SmtpServer = 'smtp.live.com'
$SmtpUser = 'your_username@outlook.com'
$smtpPassword = 'your_password'
$MailTo = 'your_to_mail@example.com'
$MailFrom = 'your_username@outlook.com'
$MailSubject = "Test using $SmtpServer" 
$Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $SmtpUser, $($smtpPassword | ConvertTo-SecureString -AsPlainText -Force) 
Send-MailMessage -To "$MailTo" -from "$MailFrom" -Subject $MailSubject -SmtpServer $SmtpServer -Credential $Credentials -UseSsl -Port 587 

我解决了把端口改为25的问题。但为什么我不能使用IMAP呢?

我解决了将端口更改为25的问题。但是为什么我不能使用IMAP呢?

将此添加到catch块
$\u.Exception.Message
以查看实际问题所在,也许您还可以向我们提供完整的错误消息(以了解导致错误的行)。异常调用“使用“1”参数发送”发送邮件失败将此添加到您的catch块
$\u0.Exception.Message
以查看实际问题是什么,也许您还可以向我们提供完整的错误消息(以了解导致错误的行)。异常调用“带“1”参数的发送”发送邮件失败我的错误是端口。我不知道为什么我在电子邮件客户端中使用的端口会给我错误。顺便说一句,你的解决方案可以被认为是可以接受的。我的错误是港口。我不知道为什么我在电子邮件客户端中使用的端口会给我错误。顺便说一下,你的解决方案可以被认为是可以接受的。