meisterkunglao
Goto Top

E-Mail über CMD versenden

Hallo Leute!
Ich möchte gerne am z.B. am Anfang und am Ende eines CMD-Scripts einen Befehl einfügen, der mir eine Benachrichtigung an mein Handy schickt. Um mir zu bestätigen, dass das Programm gestartet/erfolgreich beendet wurde.
Um es nicht zu kompliziert zu machen, hatte ich die Idee einfach eine E-Mail verschicken zu lassen aber bekomme leider eine Fehlermeldung. (Falls ihr noch eine coolere Methode kennt, eine Notification per CMD ans Handy zu schicken, könnt ihr diese gerne vorschlagen!!!)

Ich bekomme immer diese Fehlermeldung:

"Send-MailMessage : Die angegebene Zeichenfolge besitzt nicht das für eine E-Mail-Adresse erforderliche Format.  
In Zeile:1 Zeichen:1
Send-MailMessage -To 'info@testmail.com' -Subject 'Testmailing' -Bod ...  
~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidType: (Powershell:String) [Send-MailMessage], FormatException
    + FullyQualifiedErrorId : FormatException,Microsoft.PowerShell.Commands.SendMailMessage"  

Das Script zur E-Mail Versendung im CMD sieht aktuell so aus:
@echo off
set SMTP=Server.Name.com
set SUBJECT=Testmailing
set BODY=Was ist der Body eigentlich
set FROM=Powershell%computername%
set TO=info@testmail.com

echo Dies ist eine nicht funktionierende Testmail
powershell -ExecutionPolicy Unrestricted -c "Send-MailMessage -To '%TO%' -Subject '%SUBJECT%' -Body '%BODY%' -SmtpServer '%SMTP%' -From '%FROM%'"  

Ich muss aber auch zugeben, dass das Script ursprünglich nicht von mir stammt und ich auch nicht wirklich weiß, was dieses "set FROM=Powershell%computername%" soll und ob ich da wirklich meinen Computernamen reinschreiben muss?

Mir währe es wichtig, dass das ganze innerhalb von CMD funktioniert, damit ich nicht noch ein neues externes Programm ansteuern muss (außer ihr sagt, dass das sinnvoller wäre).

Ich wäre für eure Hilfe wirklich sehr dankbar!
Kommentar vom Moderator Dani am 05.02.2024 um 21:21:32 Uhr
Formatierungen überarbeitet.

Content-ID: 32965418949

Url: https://administrator.de/contentid/32965418949

Ausgedruckt am: 24.11.2024 um 22:11 Uhr

rubberman
rubberman 05.02.2024 um 21:00:50 Uhr
Goto Top
Hallo.

https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell ...
The From parameter is required. This parameter specifies the sender's email address.

versus
Die angegebene Zeichenfolge besitzt nicht das für eine E-Mail-Adresse erforderliche Format.
und
set FROM=Powershell%computername%

Steffen
MeisterKungLao
MeisterKungLao 05.02.2024 aktualisiert um 21:13:52 Uhr
Goto Top
Ich vermute, du willst mir sagen dass ich bei "FROM" eine E-Mail Adresse eingeben soll
Ich denke ganze Sätze zu schreiben hätte meinem Verständnis besser geholfen aber ja es scheint was verändert zu haben.

Leider bekomme ich nur jetzt eine andere Fehlermeldung:

Send-MailMessage : Postfach nicht verfügbar. Die Serverantwort war: 5.7.1 <hier steht die empfänger email>: Recipient address rejected: Mail appeared to be SPAM or forged. Ask your Mail/DNS-Administrator to correct HELO and DNS MX settings or to
get removed from DNSBLs; MTA helo: der Pc name, MTA hostname: irgendeine ip.dynamic.kabel-deutschland.de[irgendeine IP Adresse] (helo/hostname mismatch)
In Zeile:1 Zeichen:1
Send-MailMessage -To 'hier steht die empfänger email' -Subject 'Testmailing' -Bod ...  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage], SmtpFailedRecipientException
    + FullyQualifiedErrorId : SmtpException,Microsoft.PowerShell.Commands.SendMailMessage
Cloudrakete
Cloudrakete 05.02.2024 um 21:12:52 Uhr
Goto Top
Hi,

warum zum Teufel mit CMD, wenn du dein Batch-File sogar am Ende mit PowerShell aufrufst?
Rubberman hat in seinem Link eine allumfassende Antwort geliefert, mithilfe dessen man dein Konstrukt auf PowerShell umbauen kann.
MeisterKungLao
MeisterKungLao 05.02.2024 aktualisiert um 21:22:57 Uhr
Goto Top
okay ich probiere es grad mal nur mit Power Shell.
MeisterKungLao
MeisterKungLao 05.02.2024 um 21:26:14 Uhr
Goto Top
Jetzt bekomme ich die Fehlermeldung "Das Hashliteral war unvollständig."
Aber auf der Seite 10. Hashtables blicke ich grad nicht so schnell durch, wie ich das in meinem Fall einfügen muss damit es zum Rest des Scripts passt.
Meines sieht jetzt bisher so aus:

$sendMailMessageSplat = @{
	From = 'User01 <info@testmail.com>'  
    To = 'User02 <info@testmail2.com>'  
	SMTP=hierstehtmein.server.com
	BODY=Hier kommt wohl ein inhalt hin
    Subject = 'Test mail'  
rubberman
rubberman 05.02.2024 um 21:34:15 Uhr
Goto Top
Fehlt die schließende geschweifte Klammer?
Dani
Dani 05.02.2024 um 21:44:11 Uhr
Goto Top
Zusätzlich fehlen bei Zeile 4 und 5 noch die beim Value die Hochkommas...
manuel-r
manuel-r 05.02.2024 um 23:06:28 Uhr
Goto Top
Ob du es per Powershell oder über Batch bzw Kommandozeile machst wird beides wenig daran ändern, dass der empfangene Mailserver deine eMail ablehnt

5.7.1 Recipient address rejected: Mail appeared to be SPAM or forged. Ask your Mail/DNS-Administrator to correct HELO and DNS MX settings or to get removed from DNSBLs

Manuel
mbehrens
mbehrens 05.02.2024 um 23:17:15 Uhr
Goto Top
Zitat von @MeisterKungLao:

Leider bekomme ich nur jetzt eine andere Fehlermeldung:

Send-MailMessage : Postfach nicht verfügbar. Die Serverantwort war: 5.7.1 <hier steht die empfänger email>: Recipient address rejected: Mail appeared to be SPAM or forged. Ask your Mail/DNS-Administrator to correct HELO and DNS MX settings or to
get removed from DNSBLs; MTA helo: der Pc name, MTA hostname: irgendeine ip.dynamic.kabel-deutschland.de[irgendeine IP Adresse] (helo/hostname mismatch)
In Zeile:1 Zeichen:1
Send-MailMessage -To 'hier steht die empfänger email' -Subject 'Testmailing' -Bod ...  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage], SmtpFailedRecipientException
    + FullyQualifiedErrorId : SmtpException,Microsoft.PowerShell.Commands.SendMailMessage

Dies deutet darauf hin, dass der genutzte Internetzugang unzureichend für den direkten E-Mail Versand konfiguriert ist.
Nutze das zur Domain gehörende SMTP Relay.
Felix0201
Felix0201 06.02.2024 um 08:22:21 Uhr
Goto Top
$smtp_server = "dein.server.de"  
$from = "absender@dein-server.de"  
$to1 = "empfänger@dein-server.de"  
$subject = "Dein Betreff"  
$body = "Mailinhalt"  

Send-MailMessage -From $from -To $to1 -Subject $subject -Body $body -Priority High -DeliveryNotificationOption OnSuccess, OnFailure -SmtpServer $smtp_server -encoding ([System.Text.Encoding]::UTF8)


hier mal ein Auszug aus meinem Skript, vielleicht hilft es dir weiter...
TimelessVision
TimelessVision 06.02.2024 um 12:18:26 Uhr
Goto Top
Hi

Ich nehme für sowas immer Blat.