2017-01-23 2 views
1

Я пытаюсь отправить электронное письмо, но получаю сообщение об ошибке. У меня есть powershell 4.0, поэтому просто для информации. Я использую GUI, созданный с помощью PrimalForms. Как вы можете видеть, я пытаюсь отправить от двух разных почтовых хостеров. Gmail и HotmailPowershell Отправить сообщение Ошибка

Сообщение об ошибке:

Send-MailMessage : Die E-Mail-Nachricht kann nicht gesendet werden, da kein SMTP-Server angegeben wurde. Sie müssen entweder mit dem 
SmtpServer-Parameter oder der $PSEmailServer-Variablen einen SMTP-Server angeben. 
In Zeile:118 Zeichen:9 
+   Send-MailMessage -From "$textBox_From.text" -To "$textBox_To. ... 
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidArgument: (:) [Send-MailMessage], InvalidOperationException 
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.SendMailMessage 

-Body : Die Benennung "-Body" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. 
Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang. 
In Zeile:119 Zeichen:9 
+   -Body "$textBox_Text.text" -SmtpServer "mail.google.com" -por ... 
+   ~~~~~ 
    + CategoryInfo   : ObjectNotFound: (-Body:String) [], CommandNotFoundException 
    + FullyQualifiedErrorId : CommandNotFoundException 

Мои Powershell Код:

$button_MailSenden_OnClick = { 

    if (($textBox_From.TextLength -eq 0) -or 
     ($textBox_To.TextLength -eq 0) -or 
     ($textBox_Subjekt.TextLength -eq 0) -or 
     ($textBox_Text.TextLength -eq 0)) { 

     [System.Windows.Forms.MessageBox]::Show("Bitte füllen Sie alle Kriterien aus." , "Combat 19") 

     #Gmail 
    } elseif ($radioButton_Gmail.Checked) { 

     Send-MailMessage -From "$textBox_From.text" -To "$textBox_To.text" -Subject "$textBox_Subjekt.text" 
     -Body "$textBox_Text.text" -SmtpServer "mail.google.com" -port "587" 

     [System.Windows.Forms.MessageBox]::Show("Mail gesendet!" , "Combat 19 - Gmail") 

     #Hotmail 
     } elseif ($radioButton_Hotmail.Checked) { 

     Send-MailMessage -From "$textBox_From.text" -To "$textBox_To.text" -Subject "$textBox_Subjekt.text" 
     -Body "$textBox_Text.text" -SmtpServer "smtp.live.com" -port "487" 

     [System.Windows.Forms.MessageBox]::Show("Mail gesendet!" , "Combat 19 - Hotmail") 

    } 
} 
+0

используйте английские сообщения об ошибках. Benutz lieber englische Fehlermeldungen, sonst können dir nur weniger Leute helfen. – hering

+0

Удалите разрывы строк между 'Send-MailMessage' и' -Body ... ' –

+0

Хорошо, в нем говорится, что -body не является командлетом. Я попытался открыть его не в PowerGui и, похоже, не подключиться к серверу smtp ... –

ответ

2

-Body является параметром для Send-MailMessage поэтому они оба должны быть на той же строке. Возможно, вы забыли обратные записи при копировании &, вставляя код (backticks позволяют разбить длинные строки). Я поместил некоторые в свой фрагмент, будьте осторожны:).

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

Попробуйте, например:

$button_MailSenden_OnClick = { 

    if (($textBox_From.TextLength -eq 0) -or 
     ($textBox_To.TextLength -eq 0) -or 
     ($textBox_Subjekt.TextLength -eq 0) -or 
     ($textBox_Text.TextLength -eq 0)) { 

     [System.Windows.Forms.MessageBox]::Show("Bitte füllen Sie alle Kriterien aus." , "Combat 19") 

     #Gmail 
    } elseif ($radioButton_Gmail.Checked) { 

     Send-MailMessage -From $textBox_From.text ` 
         -To $textBox_To.text ` 
         -Subject $textBox_Subjekt.text ` 
         -Body $textBox_Text.text ` 
         -SmtpServer "mail.google.com" ` 
         -Port "587" 

     [System.Windows.Forms.MessageBox]::Show("Mail gesendet!" , "Combat 19 - Gmail") 

     #Hotmail 
     } elseif ($radioButton_Hotmail.Checked) { 

     Send-MailMessage -From $textBox_From.text ` 
         -To $textBox_To.text ` 
         -Subject $textBox_Subjekt.text ` 
         -Body $textBox_Text.text ` 
         -SmtpServer "smtp.live.com" ` 
         -Port "487" 

     [System.Windows.Forms.MessageBox]::Show("Mail gesendet!" , "Combat 19 - Hotmail") 

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