Automatisch als PDF drucken und als E-Mail versenden
Ich werde eine Lösung von mir vorstellen die ich erfolgreich einsetze
Ich habe einen Weg geschaffen, mit dem ich eine PDF Druck automatisch als Anhang einer E-Mail beifügen und versenden kann. Ausgangssituation war folgendes Szenario. Ein automatisch generierter Drucker Strom sollte nach Möglichkeit als PDF Dokument an eine E-Mail angehängt werden. Ich habe eine Lösung mit „GhostScript“, „FreePDF“, einem kleinen Programm „mailsend.exe“ und einem kleine eigenen Batch-Script geschaffen.
- Vorwort
- Installation der benötigten Komponenten
- Einrichtung und Anpassung meines Batch-Scriptes
- FreePDF für unser Vorhaben anpassen
- Abschließender Funktionstest
Vorwort
Vielleicht habe sich auch ein ähnliches Problem. Sie eine Automatikdrucke und dieser werden durch bestimmte Ereignisse oder zu bestimmten Zeiten auf einen oder mehrere Drucker gelenkt. So auch bei uns. Jetzt kam aber eine Ausnahme für drei bestimmte Ereignisse. Jemand, der nicht am selben Netzwerk arbeitet und auch keinerlei Zugriffe auf unser Netzwerk bekommen soll, muss auch einen Ausdrucke für eine bestimmte Zeit bekommen, zur Präsentation. Vorort nur ein Laptop mit Internet Zugang und E-Mail Postfach. Jetzt kommt meine Lösung ins Spiel.
Installation der benötigten Komponenten
Wie schon einmal oben erwähnt, braucht man zur Realisierung des Vorhabens drei Programme. Zum einen das Programm GhostScript, FreePDF und mailsend1.15b5.exe.
Als ersten sollten man GhostScript installieren, ich habe mich für die Aktuelle Version 8.70 entschieden. Die Installation von GhostScript ist auch sehr einfach, man klickt doppelt auf das Programm was man heruntergeladen hat „gs870w32.exe“ und folgt den Anweisungen. Bei der GhostScript Installation würde ich empfehlen, den Hacken bei „All Users“ zu setzen.
Nach der GhostScript Installation kann man FreePDF gleich hinter her installieren. Die Installation von FreePDF ist noch einfacher als die von GhostScript.
Einfach das heruntergeladen Programm starten, einmal mit dem Button „Setup“ bestätigen und am Ende der Installation auf dem Button „End“. Schon ist FreePDF installiert und kann benutzt werden. Es kann aber vorkommen, das FreePDF das einlegen der originalen Windows Installations CD-ROM fordert, da noch ein paar Dateien nach kopiert werden müssen.
Das mailsend1.15b5.exe ist kein Programm zum installieren sonder eine ausführbare binäre Datei. Diese Datei muss man in das selbe Verzeichnis legen, in dem sich später das Batch-Script von mir abgelegt wird. Ich würde vorschlagen den Pfad „c:\druck2pdf“, welches man am besten gleich anlegt und die mailsend1.15b5.exe dort ablegt. Zum Zeitpunkt wo ich die Datei heruntergeladen habe, gab es die Version 1.15 nur als eine Beta Version, was ich aber brauchte, da die Stable Version 1.14 das smtp-auth nicht richtig beherrschte bzw. ich Probleme hatte, das unser „Exchange Server“ die E-Mails akzeptierte. Mit der Version 1.15 Beta5 klappte alles bestes. ACHTUNG, das Programm habe ich in „mailsend.exe“ umbenannt. Wer das nicht machen möchte, der muss mein Batch-Script dem entsprechend weiter anpassen als ich das hier vorgebe.
Einrichtung und Anpassung meines Batch-Scriptes
Mein Script ist recht einfach gestrickt und die Meisten Werte sind in Variablen eingetragen. Aber schauen wir uns das Batch-Script erst einmal an, das unter dem Namen pdfcp.bat befindet:
@echo off
SET pdfback=C:\druck2pdf\sicherung
SET mailsnd=C:\druck2pdf
SET sender=mailmaster@mail.de
SET ruecks=mailmaster@mail.de
SET empfae=xyz.abcd@mail.de
SET empfcc=a.bcde@test.de
SET antwrt=xyz.abcd@mail.de
SET domaen=mail.de
SET betref=Automatische E-Mail mit PDF Dokument
SET smtpsv=mailsrv.mail.de
SET smtpus=mailmaster
SET smtppw=xyzzyx
path=%path%;%mailsnd%
echo %1
copy %1 "%pdfback%\%2 %3.pdf"
echo http://www.muquit.com/muquit/software/mailsend/mailsend.html
echo Verwende mailsend.exe 1.15b5
mailsend.exe -smtp %smtpsv% -port 25 -f %sender% -t %empfae% -cc %empfcc% +bcc +D -sub "%betref%" -d %domaen% -attach %1 -M "Vorlaeufiges Wahlergebnis Stadt Soest" -v -rt %antwrt% -auth-login -user %smtpus% -pass %smtppw%
REM pause
Das Batch-Script ist fast selbsterklärend. In die Variable „sender“ wird die E-Mail Adresse eingetragen, unter deren E-Mail Adresse die E-Mail auch verschickt wird. ACHTUNG, der Benutzer der in der Variable „smtpus“ eingetragen wird, muss logischerweise auch die Berechtigung auf dem Mailserver haben, unter dieser E-Mail Adresse senden zu dürfen. In der Variable „smtppw“ wird das Passwort für den Benutzer hinterlegt (Klartext) und nach Möglichkeit keine Account benutzen der Administrative Rechte besitzt!
In „empfae“ steht die E-Mail Adresse des Empfängers für die E-Mail, in der „empfcc“ Variable kann eine CC E-Mail Adresse eingegeben werden (z.B. sich selber, zur Kontrolle) und in der Variable „antwrt“ wird die E-Mail Adresse hinterlegt, an die eine Rückantwort gesendet wird (z.B. wenn der Empfänger auf die E-Mail antworten möchte). In „domaen“ wird die Domäne eingetragen, für den der E-Mail Server zuständig ist und in „smtpsv“ wird der E-Mail Server als FQN oder IP-Adresse eingetragen. In „betref“ wird nur eine Zeile eingetragen, die logischer weise im Betreff der E-Mail auftaucht.
In der lagen Zeile mit dem Befehl „mailsend.exe -smtp ….“ ist der eigentliche Befehl, der das PDF-Dokument an die E-Mail hängt und das ganze zum Mailserver sendet und sich an diesem auch authentifiziert. In dieser Zeile gibt es eine Abschnitt (...“Hier kann man einen Satz schreiben, der auch in der E-Mail enthalten sein soll.“...) kann man noch eine Zeile eintippen der auch in der E-Mail selber stehen wird, eine knappe Beschreibung. Mehr als ein Satz führte bei mir zu vielen Problemen, deshalb weise ich auch noch einmal explizit darauf hin, nach Möglichkeit nur einen Zeile dort ein zu tragen. Diese Script packt man in das Verzeichnis welches auch in der Variable „mailsnd“ eingetragen ist, in unserem Fall ist es „c:\druck2pdf“. Bei der Gelegenheit auch gleich das Verzeichnis „c:\druck2pdf\sicherung“ anlegen, welches auch in der Variable „pdfback“ angegeben ist. In dieser Verzeichnis landen alle PDF-Dokumente mit Zeit- und Datumsangabe die vom System generiert wurden.
Zusammenfassung der Variablem im Script
Hier eine kleine Zusammenfassung der einzelnen Variablen in meinem Batch-Script:
SET pdfback= | Pfad zum Verzeichnis, wo die Sicherungs-Dokumente abgelegt werden könne, muss existieren |
SET mailsnd= | Pfad zum Verzeichnis, wo sich das „mailsend.exe“ Programm befindet |
SET sender= | Der Sender, unter der E-Mail Adresse wird die E-Mail verschickt |
SET empfae= | Der Empfänger der E-Mail, an dieser Adresse wird die E-Mail automatisch versendet |
SET empfcc= | Der CC Empfänger, wenn noch jemand eine Kopie der E-Mail erhalten soll |
SET antwrt= | Die Antwort E-Mail Adresse, wenn der Empfänger auf die E-Mail antwortet, bekommt die Antwort ein anderer wie der Sender |
SET domaen= | Die (E-Mail) Domäne zu dem der Sender der automatischen E-Mail gehört |
SET betref= | Hier kann man einen kurzen Betreff eingeben, aber bitte nur 1-zeilig |
SET smtpsv= | FQN oder IP-Adresse des E-Mail-Servers |
SET smtpus= | Der Benutzername, unter dem der Sender sich am E-Mail Server anmelden muss |
SET smtppw= | Passwort des Benutzer, der sich als Sender am E-Mail Server authentifizieren muss, im Klartext |
FreePDF für unser Vorhaben anpassen
Das Grundgerüst ist jetzt fertig, aber die eigentliche Anpassung des Programms FreePDF muss noch geschehen. Als erstes müssen wir in FreePDF ein eigenes Profil und einen eigenen Drucker für unser Vorhaben einrichten. Das geht am besten wenn man aus dem Startmenü „Start->FreePDF->FreePDF“ öffnet und dort gleich weiter „Bearbeiten->Einstellungen“ klickt. Es öffnet sich ein Fenster wie auf dem zweitem Bild zu sehen ist (FreePDF Konfiguration). Unter den linken Optionen wählt man „Profile“ und rechts klickt man auf dem Button „Neu“. Es öffnet sich ein neues Fenster mit dem Titel 'Profil Editor'. In dem Textfeld „Name des Profils“ gibt man am besten den Namen „druck2pdf2email“ ein. Der Name ist aber auch frei wählbar. Damit das Profil auch für alle anderen Benutzer des Rechner zur Verfügung stehen, aktiviert man die Option „Für Alle Benutzer“ aktivieren. Dann im linken Fenster gleich die Option „Aktion nach PDF Erstellung“ aktivieren und im rechten Textfenster „Befehlszeile“ die Folgende Zeile eingeben:
c:\druck2pdf\pdfcp.bat %pdfFile %date %time
Hat man das getan, klickt man links gleicht weiter auf „FreePDF Dialog“. Rechts kann man da jetzt einstellen, die FreePDF mit der Erstellung umgehen soll. Man wählt unter „Aktion beim Drucken“ aus, „In Ordner speichern“. Damit haben wir verhindert, das FreePDF das Dialogfenster öffnet, in dem man sich eine Aktion aussuchen kann, wir mit dem PDF fortgefahren wird. Unter „Pfad / Datei“ können wird auch noch einstellen, in welchen Pfad das frisch erstellte PDF-Dokument abgelegt werden soll. Dazu klicken wir am besten auf den Button „...“ und suchen und das Verzeichnis aus, in das wir schon das „mailsend1.15b5.exe“ und das script „pdfcp.bat“ abgelegt haben. In unserem Fall ist das „C:\druck2pdf“, was wir und auch aussuchen. Kontrollieren sollte man bei der Gelegenheit auch noch, das kein Hacken vor der Option „PDF öffnen“, das sonst nach jeder Erstellung einer PDF Datei diese auch gleich geöffnet wird, unschön!
Ist alles eingetragen, so kann man auf den Button „Speichern“ klicken und die Einstellungen sollten unter unserem Profil gespeichert werden. Das Fenster wird geschlossen und man sieht wieder das darunter liegende Fenster für die Konfiguration. Ganz unten sieht man einen langen Button mit der Beschriftung „Für das aktuelle Profil einen eigenen Drucker anlegen“, welchen wir jetzt anklicken. Aber vor dem anklicken bitte noch einmal darauf achten, das auch immer noch unser Profil oben ausgewählt ist. FreePDF legt jetzt einen Systemweiten Drucker für uns an, der 'FreePDF – druck2pdf2email' heißt. Im zweiten Teil sehen wir unseren Profil Namen enthalten. Das ist auch schon der ganze Trick, aber ein sehr wirkungsvoller Trick.
Abschließender Funktionstest
Zum Abschluss sollten wir eine Funktionstest starten. Das geht am besten, wenn wir eine Testseite auf den Drucker „FreePDF – druck2pdf2email“ senden. Es kann aber auch ein beliebiger Ausdruck einer Anwendung sein. Nach dem absenden des Druck-Job öffnet sich kurz eine Kommando Box, in der unser Batch-Scrupt abgearbeitet wird und die E-Mail mit dem Anhang erzeugt wird. Wenn alles so geklappt hat wie es soll, müssten wir in dem Postfach unseres Empfänger eine E-Mail stehen haben, die von uns automatisch zu einem PDF Dokument generiert worden ist und als Anhang via E-Mail verschickt. Sollte es nicht geklappt haben, so ist es am besten, wenn man noch einmal alle Relevanten Punkte abarbeitet und am Ende des Batch-Scripts eine „pause“ einbaut, dann wir nach einem Lauf eine Pause gemacht und man kann vielleicht einen Fehler entdecken. Meisten liegt es an der Berechtigung an dem E-Mail Server oder man hat ein falsches Kennwort/Benutzer gewählt, der keine Berechtigung auf die E-Mail Adresse hat. Oder etwas ähnliches in diese Richtung.
Written by van GoDD
Für weitere Tipps oder Verbesserungsvorschläge bin ich euch sehr dankbar. Ich halte meine Website aber nicht so super aktuell, bitte habt da etwas Nachsicht mit mir.