3xplor3r
Goto Top

Windows 2012 Server PowerShell Skript Mailversand - Ausnahme beim Versenden

Hallo,

ich mache gerade meine ersten Schritte mit der PowerShell und versuche mich an einem Skript, dass die IP-Adresse versenden soll.

Um ehrlich zu sein, ist das Skript bisher vollständig zitiert [Quelle: http://blog.stefanrehwald.de/2013/06/04/powershell-07-e-mail-versenden- ...]

 
function sendmail($Body)
{
$Smtp = New-Object System.Net.Mail.SmtpClient
$MailMessage = New-Object System.Net.Mail.MailMessage
$Smtp.Host = "mail.arcor.de"  
$MailMessage.From = "anonymous@the.net"  
$MailMessage.To.Add("anonymous@the.net")  
$MailMessage.Subject = "IP Address"  
$MailMessage.Body = $Body
$MailMessage.IsBodyHtml = $false
$SmtpUser = New-Object System.Net.NetworkCredential
$SmtpUser.UserName = "anonymous@the.net"  
$SmtpUser.Password = "*********"  
$Smtp.Credentials = $SmtpUser
$Smtp.Send($MailMessage)
}

$Body = get-WMIObject Win32_NetworkAdapterConfiguration -filter IPEnabled=true

sendmail $Body

Das ist der Code soweit. Wenn ich in der ISE nun das ganze ausführe, kommt die Fehlermeldung.

 
Ausnahme beim Aufrufen von "Send" mit 1 Argument(en):  "Fehler beim Senden von Mail."  
In C:\Users\Administrator\Desktop\sendmail.ps1:15 Zeichen:1
+ $Smtp.Send($MailMessage)
+ ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) , MethodInvocationException
    + FullyQualifiedErrorId : SmtpException

Offensichtlich liegt es am nicht eingerichteten SMTP-Server. Im Moment weiß ich hier allerdings nicht weiter. Kann jemand helfen?

LG

Content-ID: 243558

Url: https://administrator.de/forum/windows-2012-server-powershell-skript-mailversand-ausnahme-beim-versenden-243558.html

Ausgedruckt am: 23.12.2024 um 05:12 Uhr

colinardo
colinardo 14.07.2014 aktualisiert um 10:44:47 Uhr
Goto Top
Moin 3xplor3r,
du solltest überprüfen ob der SMTP-Host bei Arcor überhaupt noch unverschlüsselte Mails auf dem Standard-Port 25 annimmt. Ich würde den Login mal über Port 465 und SSL aktivieren, so wie es Arcor angibt:
$smtp.Port = 465
$smtp.EnableSsl = $true
Dann muss die Absendermailadresse natürlich auch mit deinem Account übereinstimmen, und dein Passwort solltest du mit einfachen Anführungszeichen einfassen für den Fall das es Sonderzeichen wie z.B. ein Dollarzeichen enthält, was von Powershell sonst als Variable interpretiert würde.

Zusätzlich solltest du die Ausgabe der IP-Adresse als String formatieren. Im jetzigen Zustand übergibst du ein Objekt als Body anstatt eines Strings (Der Body würde also nur den Typ des Objektes enthalten und nicht die IP-Adresse selber); mach es z.B. so:
$Body = get-WMIObject Win32_NetworkAdapterConfiguration -filter IPEnabled=true | select IPAddress | out-string
So läuft es hier testweise mit dem Code einwandfrei.

Grüße Uwe
3xplor3r
3xplor3r 14.07.2014 um 11:07:45 Uhr
Goto Top
Vollkommen korrekt, der Port 587 (TLS) bringt auch keine Ausnahme. Port 465 sendet zwar auch erfolgreich, in PowerShell kommt jedoch weiterhin die gleiche Ausnahme.

Die Informationen, bspw. Absenderadresse, habe ich nur für den Post herausgenommen.

Wie gesagt, die Mail kommt an, allerdings mit folgendem Inhalt.

IDAddress                                                                                                                                                                                     
---------                                                                                                                                                                                     

LG
colinardo
Lösung colinardo 14.07.2014 aktualisiert um 11:14:44 Uhr
Goto Top
Zitat von @3xplor3r:
Wie gesagt, die Mail kommt an, allerdings mit folgendem Inhalt.
das die Mail abgeschickt wird hast du nicht erwähnt ...

IDAddress
du hast einen Schreibfehler, es heißt IPAddress nicht IDAddress
3xplor3r
3xplor3r 14.07.2014 um 11:14:40 Uhr
Goto Top
Großartig face-smile, der Wald und die Bäume. Darauf hatte ich nicht geachtet. Lösung funktioniert. Vielen Dank für deine schnelle Hilfe.

LG