2016-06-01 19 views
0

Я следующий Powershell скрипт, который я хотел бы использовать для отправки по электронной почте: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 = "[email protected]" 
$smtpFrom = "[email protected]" 
$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 

Что неправильно с этим кодом?

+0

Добавьте это в свой блок catch '$ _. Exception.Message', чтобы узнать, что представляет собой реальная проблема: –

+0

И, возможно, вы также можете дать нам полное сообщение об ошибке (чтобы узнать, какая строка вызывает ошибку). – sodawillow

+0

Исключение вызова «Отправить с» 1 «аргументы» Отказ Отправка почты – Discipulos

ответ

1

Вы не указали $smtpFrom (адрес, с которого отправлено электронное письмо). Кроме того, только предложение, почему бы вам не использовать Send-MailMessage командлет, он доступен из PowerShell 2.0

Этот код работает для меня без каких-либо проблем с smtp.live.com и портом 587 с SSL

$SmtpServer = 'smtp.live.com' 
$SmtpUser = '[email protected]' 
$smtpPassword = 'your_password' 
$MailtTo = '[email protected]' 
$MailFrom = '[email protected]' 
$MailSubject = "Test using $SmtpServer" 
$Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $SmtpUser, $($smtpPassword | ConvertTo-SecureString -AsPlainText -Force) 
Send-MailMessage -To "$MailtTo" -from "$MailFrom" -Subject $MailSubject -SmtpServer $SmtpServer -Credential $Credentials -UseSsl -Port 587 
+0

Моя ошибка была в порту. Я не знаю, почему порт, который я использую в моем почтовом клиенте, дал мне ошибку. Кстати, ваше решение можно считать принятым. – Discipulos

0

Я решаемые изменениями порта до 25. Но почему я не могу использовать IMAP?

Смежные вопросы