kaiszza
Goto Top

Hilfe bei einem Script zum autom. versenden von E-Mails

Hallo liebes Administrator.de Forum!

Zunächst mal; sorry, falls es das Thema bereits gibt (ich habe halb relevante Antworten zu meinem Thema bereits gefunden, aber die erscheinen mir sehr kompliziert), entschuldigt bitte den Doppelpost.

Ich bin Azubi im ersten Lehrjahr zum Systemintegrator und bin heute vor ein kleines Problem gestoßen. Ich sollte für ein anstehendes Forum von unserer Firma einen Multifunktionsdrucker mit Faxfunktion einrichten, damit Interessenten sich dafür auch abseits von E-Mail und Telefon anmelden können (per Fax). So weit so gut, der Faxempfang funktioniert. Die entsprechende Software läuft auf einem Rechner bei uns, der so gut wie immer an ist, weil dieser auch als Backuprechner dient (externe Festplatte etc.). Sprich; jegliche Faxe werden auf diesem Rechner als PDFs hinterlegt neben der Tatsache, dass sie auch aus dem Drucker in Papierform direkt rauskommen.

So, nun zu meiner Frage..

Da die Abteilung, die für die Anmeldungen zuständig ist, zwei Stockwerke tiefer sitzt und nicht weiß, ob und wann ein Fax ankommt, ist es für die momentan noch ziemlich blöd alle 20 Minuten hochlaufen zu müssen, um zu schauen, ob ein neues Fax da ist. Ich habe mir ein wenig Gedanken zur Lösung des Problems gemacht und folgende Ideen hatte ich:

- den Ordner, in dem die PDFs liegen, im Netzwerk freigeben, damit die Abteilung darauf zugreifen kann => suboptimal, da das irgendwie doppelt gemoppelt wäre (Ausdruck plus PDF überflüssig). sie würden zwar sehen, wenn ein neues Fax ankommt, aber dafür müsste auch andauernd jemand an dem besagten Rechner angemeldet sein (das ist zwar in 80% der Zeit so, aber garantieren kann man das nicht)

- meine zweite Idee war es, die PDFs als Mailanhang direkt an die zuständigen Leute zu versenden (sobald ein neues Fax ankommt), was aber ein ähnlichen Problem wie in Option 1 aufweist: die Leute kriegen zwar mit, sobald ein Fax ankommt wegen der E-Mail, aber die PDF nützt ihnen ja kaum was, wenn das fertige Papier bereits oben im Drucker liegt => doppelt gemoppelt

- meine letzte (und ich glaube beste) Idee ist es, das ganze über ein Batch Script und die Windows Aufgabenplanung zu regeln => ich richte ein Script ein, was automatisch jede Stunde den Ordner nach einem bestimmten string (zB *Fax oder findstr "%date%") durchsucht und dann automatisch eine E-Mail an die relevanten Personen verschickt, dass ein neues Fax da ist. Dann wissen die Leute, wann es sich lohnt, hochzugehen. Damit erspare ich mir auch, dass die Faxe als PDF unnötig an die Leute verschickt werden (zur Not weiß ich ja, wo diese liegen)

Lange Rede kurzer Sinn: könnt ihr mir helfen bei dem Script? Ich habe uuuungefähr eine Idee, aber ich arbeite mich gerade noch ganz frisch in diese ganze Scripting Geschichte ein und das hier sorgt gerade für eine Blockade bei mir. Ich füge mal meine Ideen hier ein bzw was ich mir dabei so gedacht habe:

dir d:\Temp\Fax_public\Fax*|findstr "%date%" >nul && goto :POSITIV

WENN JA:

per D:\Programme\sendEmail\sendEmail.exe eine Mail versenden
%SENDMAIL% -s %MAILSERVER% -f %EMAIL_SENDER% -t %EMAIL_RECEIVER% -u %BETREFF% -m %MESSAGE%

Die Variablen müsste ich natürlich definieren. Aber irgendwie fehlt da noch was oder? Wo ist mein Fehler?

Ich bedanke mich schonmal im Voraus und hoffe, der Text ist nicht zu lang!

-kaiszza

Content-Key: 365237

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

Printed on: April 26, 2024 at 11:04 o'clock

Member: NetzwerkDude
Solution NetzwerkDude Feb 20, 2018 updated at 17:26:38 (UTC)
Goto Top
Also ich habe SenMail für Windows noch nie benutzt, daher kann ich nichts zu dem Tool sagen.

Grundsätzlich: Wenn du schon das Programme Schreiben unter Windows anfängst, dann ist es evtl. sinnvoll gleich mit Powershell statt der klassichen cmd anzufangen, weil da Lernst du von Anfang an "modernere" Ansätze wie Objektorientierung etc. - daher das Skript unten in Powershell

Aber gut, zurück zum Thema, hier ein Skript das sowas machen würde, ich habe versucht paar Kommentare (die mit #) einzubringen, aber vermutlich wirds dich eher erschlagen
#Wo gesucht werden soll
$Pfad = "D:\Temp\Fax_public\"  
#Den Pfad Ordner durchsuchen, nur Dateien auflisten die jünger als 1 Stunde sind (sonst findet er ja immer irgendwelche alten Faxe)
$NeueFaxe = Get-ChildItem $Pfad | Where-Object {$_.CreationTime -gt (Get-Date).AddHours(-1)}
#Die Methode mit AddHours-1 ist aber nicht perfekt, da die skriptausführung ja nicht synchronisiert ist, 
#d.h. im ungünstigsten fall sieht er "grenzdaten" in zwei aufeinanderfolgenden aufrufen oder gar nicht - ist zwar unwahrscheinlich, aber sollte einem bewusst sein! 

#Variablen für den Send-MailMessage Befehl
$Absender = "Absender@Domain.com"  
$Empfaenger = "Empfaenger@seienDomain.com"  
$Betreff = "Sie haben ein Fax, laufen Sie gefälligst hoch"  
$Server = "SMTP.dein.mailserver.com"  
$MailLogin = (New-Object PSCredential("Benutzername_hier_eintragen",(ConvertTo-SecureString "Passwort_hier_eintragen" -AsPlainText -Force)))  
$TextDerMail = ($NeueFaxe | Out-String)

#Wenn im Ordner neue Dateien sind, schicke eine Mail
if ($NeueFaxe) {
    Send-MailMessage -From $Absender -To $Empfaenger -Subject $Betreff -SmtpServer $Server -Credential $MailLogin -UseSSL -Port 587 -Body $TextDerMail
}

Du musst natürlich alles was in Anführungszeichen steht, nach deinem Gusto anpassen

Als Hausaufgabe: Wie kann ich den Passwörter sicher in einer Powershell Skriptdatei speichern?
https://blogs.technet.microsoft.com/heyscriptingguy/2017/12/22/script-wa ...
(Ist wohl für das erste Lehrjahr zu schwer, aber hey, vielleicht so als Ziel zum Ende der Ausbildung) face-smile
Member: kaiszza
kaiszza Feb 22, 2018 at 08:07:23 (UTC)
Goto Top
Hi NetzwerkDude,

vielen Dank für deine Hilfe! Ich hatte bereits mit einem user hier privat Kontakt und der hat mir beim Script geholfen - auch in Powershell face-smile
Aber das Script sah deinem schon sehr ähnlich, von daher danke nochmal!

Gruß