2017-01-23 139 views
1

我尝试发送电子邮件,但收到错误消息。我有PowerShell 4.0,所以仅供参考。我使用PrimalForms制作的GUI。正如你可以看到我尝试从两个不同的邮件主机发送。 Gmail和Hotmail的Powershell发送邮件错误消息

错误消息:

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

请用英文错误消息。 Femlermeldungen,sonstkönnendir nur weniger Leute helfen。 – hering

+0

删除'Send-MailMessage'和'-Body ...'之间的换行符。' –

+0

好吧,它表示-body不是一个cmdlet。我尝试打开它不是在PowerGui中,它似乎没有连接到SMTP服务器... –

回答

2

-BodySend-MailMessage参数,因此它们都应该在同一行。也许你在复制&时粘贴代码时会忘记反引号(反引号允许打破长线)。我已经把一些放在我的片段中,小心:)。

此外,您不需要引用大多数使用的值。

试试这个,例如:

$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") 

    } 
}