MailMotor

Die eMail ist heutzutage wohl das wichtigste Werkzeug in der Informationsverarbeitung überhaupt. Aus diesem Grunde gibt es auch entsprechende Clients bis zum Abwinken, je nach persönlichem Geschmack.

Bei der Entwicklung von automatischen Arbeitsabläufen in der IT kommt man manchmal in die Verlegenheit eine automatische eMail generieren und versenden zu müssen, was jedoch mit den meisten "fetten" Clients wie Outlook und Co. entweder gar nicht oder nur eingeschränkt geht; man denke nur an das Drama mit CDO und die lästigen Bestätigungsdialoge.

Aus diesem Grunde habe ich MailMotor entwickelt. Dieser Mailer besitzt keine Oberfläche, sondern er wird über eine INI-Datei oder über Parameter konfiguriert und gesteuert und ist somit ein idealer Mailer für automatische Prozesse. Beim Versand einer Mail kann lediglich ein kleines Statusfenster eingeblendet werden, dass den Fortschritt des Versands anzeigt.

Standard ist Versand einer eMail an beliebig viele Empfänger bzw. CC- und BCC-Empfänger. Über den Einsatz von sog. Empfängervariablen ist es jedoch auch möglich MailMotor anzuweisen, jedem der Empfänger eine einzelne eMail zu senden, d.h. sind z.B. 5 Empfänger konfiguriert, verschickt das Programm 5 einzelne eMails mit jeweils einem Empfänger.

Folgende Möglichkeiten bietet der kleine Mailer:

  • Angabe des SMTP-Server und des verwendeten -Ports
  • Authentifizierung über den SMTP-Server oder über einen POP3-Server
  • freie Angabe des Absenders
  • Unbegrenzte Anzahl an Empfängern
  • Unbegrenzte Anzahl an CC-Empfänger (Carbon Copy)
  • Unbegrenzte Anzahl an BCC-Empfängern (Blind Carbon Copy)
  • Mailversand als Text oder als HTML
  • Übergabe der Nachricht als Datei oder als Text
  • Unbegrenzte Anzahl an Anhängen
  • Vollständige Protokollierung aller Aktionen, inkl. globalem Fehlerprotokoll
  • Mehrsprachigkeit der Systemmeldungen über Sprachdateien
  • Personalisierung des eMail-Textes durch Empfängervariablen

Aufruf

Damit MailMotor die Werte der Konfigurationsdatei auslesen kann, muss dem Programm über einen Parameter mitgeteilt werden, welche Konfiguration verwendet werden soll.

Beispielaufruf:   mailmotor.exe /ini:sample.ini

Die Angabe der Konfigurationsdatei über den Parameter /ini: kann als kompletter Pfad erfolgen. Netzwerk-Pfade in UNC-Schreibweise (z.B. \\server\share\datei.ini) werden ebenfalls unterstützt. Wird wie im Beispiel kein kompletter Pfad angegeben, sucht die Anwendung die übergebene Datei im Anwendungsordner der mailmotor.exe.

Mit diesem Schema lassen sich so beliebig viele Konfigurationen anlegen und ausführen.

Weitere Parameter

MailMotor lässt sich statt über eine INI-Datei auch per Übergabeparameter steuern. Alle Konfigurationseinträge (siehe Abschnitt 'Die Konfigurationsdatei'), bis auf Empfängervariablen, können auch als Parameter verwandt werden. Dieser Ansatz ist jedoch nur zum Teil sinnvoll, da zum korrekten Ablauf des Programms recht viele Informationen notwendig sind. Fehlt der Parameter /ini:, so müssen dem Programm alle notwendigen Parameter mitgegeben werden. Folgenden Parameter sind dabei optional:

  • port (Standardwert=25)
  • loginname
  • loginpassword
  • pop3authserver
  • recipientccname und recipientccaddress
  • recipientbcc
  • mailtype (Standardwert=TEXT)
  • messagetype (Standardwert=TEXT)
  • attachments

Ergänzt man das obenstehende Aufrufbeispiel z.B. mit /subject:Dies ist ein weiterer Test, so wird der Eintrag in der Konfigurationsdatei, sofern eine angegeben wurde, ignoriert und der Wert des Parameters wird zum Versand der eMail verwendet. Dies bedeutet: In der Rangfolge gewinnen die Parameter gegen die Einträge der Konfigurationsdatei

Die Konfigurationsdatei

Beispiel:

;=========================================================================================
; Configuration File for MailMotor 1.2
; ----------------------------------------------------------------------------------------
;
; Zur Verwendung der Einträge bitte Readme-Datei lesen
; Please see the readme-file for usage
;
;=========================================================================================

[SMTPHosts]
Server=smtp.mymailserver.de
Port=25
LoginName=myaccount
LoginPassword=mypassword
POP3AuthServer=pop3.mymailserver.de

[Sender]
SenderName=myname
SenderAddress=myname@mymailserver.de

[Recipients]
RecipientName=Empfänger1; Empfänger2
RecipientAddress=test@email.de;test2@email.de
RecipientCCName=
RecipientCCAddress=
RecipientBCCAddress=
RecipientVariable1=test@email.de;test2@email.de

[Content]
Subject=<!CONTVAR1>
MailType=TEXT
MessageType=TEXT
Message=MailMotor-<!CONTVAR1> an <!RECVAR1> vom <!DATE>
Attachments=c:\test\test.txt
ContentVariable1=Testmail

[Options]
FullLog=true
Language=lang_en
ShowForm=true
GlobalErrorLog=c:\test\mailmotor_globalerror.log

Die Konfigurationseinträge in Einzelnen:

[SMTPHosts]

Server definiert den SMTP-Server (IP oder Host-Name) über dessen Port die eMail verschickt werden soll.

Falls der SMTP-Server eine Authentifizierung benötigt, müssen die Eigenschaften LoginName und LoginPassword definiert werden.

Sollte die Authentifizierung am SMTP-Server über einen POP3-Server ("POP First") notwendig sein, muss zudem der POP3-Server (IP oder Host-Name) in POP3AuthServer angegeben werden.

[Sender]

SenderName definiert den Klartext (Namen) des Absenders und SenderAddress die eMail-Adresse.

[Recipients]

RecipientName definiert den Klartext der Empfänger und RecipientAddress die dazugehörigen eMail-Adressen. Das gleiche gilt für CC und BCC, wobei bei BCC kein Name notwendig ist.

Mehrere Empfänger werden jeweils durch Semikolon getrennt, wobei für den Namen und die Adresse jeweils immer die gleiche Anzahl an Einträgen notwendig ist.

Zum Personalisieren von Nachrichten können in diesem Abschnitt Variablen abgelegt werden, die beim Versand der eMail in den Nachrichtentext eingesetzt werden. Die Variablennamen lauten 'RecipientVariableX', wobei das X eine fortlaufende Nummer darstellt. Die Werte der einzelnen Variablen werden durch Semikolon separiert. Die Anzahl der Werte einer Variablen muss mit der Anzahl der Empfänger übereinstimmen, sonst wird ein Fehler erzeugt.

WICHTIG:   Werden Empfängervariablen eingesetzt, so wird an jeden Empfänger EINE einzelne eMail verschickt und die Werte der CC- und BCC-Empfänger werden außer Kraft gesetzt! Ein Semikolon wird als Trennzeichen gewertet und darf somit nicht in den Werten selbst erscheinen!

[Content]

Subject definiert den Betreff der Nachricht.

MailType kann entweder den Wert TEXT oder den Wert HTML annehmen, je nachdem in welchem Format die eMail versandt werden soll.

Über MessageType (TEXT oder FILE) wird entschieden, ob der String in Message als einfacher Text oder als Pfadangabe zu einer Textdatei zu werten ist. Wird FILE definiert wird der Inhalt der in Message angegebenen Datei als Nachrichteninhalt verwand.

In Message ist die Angabe von folgenden Variablen (Platzhalter) möglich, die während der Laufzeit ersetzt werden:

     <!NOW> = aktuelles Datum mit Uhrzeit
     <!DATE> = aktuelles Datum

Über Attachments können Anhänge (Dateien) definiert werden, die mit der eMail mitgeschickt werden. Mehrere Anhänge werden durch Semikolon getrennt.

Mittels Inhaltsvariablen ('ContentVariable1','ContentVariable2', etc.) in diesem Abschnitt lässt sich der Nachrichtentext und der Betreff parametrisieren. Dies ist vor allem nützlich, wenn die Nachricht als Datei vorliegt ('MessageType=FILE'). Für verschiedene Mail-Vorgänge lässt sich so immer die gleiche Dateivorlage verwenden.

[Options]

Steht FullLog auf TRUE, wird die gesamte Kommunikation des MailMotors mit dem SMTP-Server
in der Log-Datei (gleichlautend mit INI im gleichen Pfad) festgehalten. Fehlt der Eintrag oder steht er auf FALSE, so wird lediglich das Ergebnis der Übermittlung festgehalten.
Der Name der jeweilige Log-Datei ist gleichlautend mit der angegebenen Konfigurationsdatei. Wurde kein INI-Parameter angegeben, so setzt sich der Name der Log-Datei aus dem Jahr, dem Monat und dem Tag des aktuellen Datums zusammen: z.B. 20060227.log.

Language gibt die zu verwendende Sprachdatei im Anwendungsordner an (Dateiname ohne Endung) Ist Language leer oder fehlt, so wird Englisch als Standardsprache verwendet.

Die Option 'ShowForm' legt fest, ob der Status des Programms und des eMail-Versands während der Laufzeit in einem Fenster ausgegeben wird oder nicht.

Ist die Option 'GlobalErrorLog' auf einen Wert (Dateiname inkl. Pfad) gesetzt, werden alle Fehler des MailMotor dort zusätzlich global festgehalten. Ist die dort eingestellte Datei nicht vorhanden oder endet sie nicht auf .LOG, so findet keine globale Fehlererfassung statt.

Empfängervariablen

Wie bereits erwähnt, sendet MailMotor standardmäßig eine eMail, d.h. einen Text, an alle in der Konfiguration angegebenen Empfänger. Um personalisierte Mail-Texte zu ermöglichen, verändert sich dieses Verhalten, sobald im Abschnitt Recipients mindestens eine Empfängervariable (z.B. RecipientVariable1) mit einem Wert konfiguriert ist. In diesem Fall muss MailMotor vor dem Versand der eMail für jeden einzelnen Empfänger eine individuelle Nachricht erstellen.

Unabhängig davon, ob der Nachrichtentext über eine Datei geladen wird oder ob er direkt in der INI-Datei steht, können die Textteile die personalisiert werden sollen, durch eine Variable mit der Syntax <!RECVARx> ersetzt werden, wobei das x für die laufende Nummer der in Recipients konfigurierten Empfängervariablen steht.

Beispielkonfiguration:

[Recipients]
...
RecipientVariable1=Sehr geehrter Herr Müller;Sehr geehrte Frau Dr. Mayer;Sehr geehrte Damen und Herren
RecipientVariable2=15.05.2006;16.05.2006;20.05.2006

Beispieltext:

<!RECVAR1>

Hiermit laden wir Sie am <!RECVAR2> zu einem Besuch in unseren Geschäftsräumen ein.
...

Aus einer eMail werden in diesem Beispiel somit 3 verschiedene, die einzeln versandt werden müssen. Aus diesem Grunde werden auch die Recipients-Werte CC und BCC außer Kraft gesetzt, um zu verhindern, dass ein CC-Empfänger bei z.B. 50 konfigurierten Empfängern 50 einzelne eMails erhält.

Es ist bei der Anlage der Empfängervariablen unbedingt darauf zu achten, dass das Semikolon NUR als Trennzeichen zwischen zwei Werten verwendet wird. Die Anzahl der Werte jeder Variable muss mit der Anzahl der Empfänger übereinstimmen.

Inhaltsvariablen

Ähnlich wie die Empfängervariablen lassen sich die Inhaltsvariablen einsetzen. Mit dem einen Unterschied, dass diese im Nachrichtentext und im Betreff einsetzbar sind und für alle Empfänger gleichermaßen gelten.

Mit Ihnen lassen sich Textpassage parametrisieren, wenn man eine Datei als Textlieferant einsetzt ('MessageType=FILE'). So kann man für unterschiedliche Mail-Vorgänge immer die gleiche Vorlagendatei verwenden und die Textteile, die sich jedesmal ändern, werden in Inhaltsvariablen definiert.

Im Text werden die Platzhalter nach dem Schema <!CONTVARx> notiert, wobei das x durch eine laufende Nummer zu ersetzen ist.

Einsatz - Alternative 1: Windows Taskplaner

Für den regelmäßigen Versand von eMails eignet sich der in Windows integrierte Taskplaner ganz hervorragend. Im folgenden Konfigurationbeispiel, wird der MailMotor jede Stunde mit dem Parameter der zu verwendenden INI-Datei aufgerufen.

Abbildung 1

Einsatz - Alternative 2: MailMotorAgent

Abbildung 2

Eine andere Möglichkeit des Einsatzes für das Tool ist die Auslagerung des eMails-Versandes aus einer anderen Applikation heraus, z.B. um dort Ressourcen zu sparen.

Die Hauptanwendung müsste nur noch die entsprechenden Konfigurationsdateien erzeugen und der MailMotor anstossen. In diesem Fall ist es oft jedoch wünschenswert den Start des MailMotors auch auf einem anderen Computer zu verlagern...

Diese Aufgabe kann der MailMotorAgent unter Windows 2000/XP oder Windows 2003 Server übernehmen. Er ist, wie das Tool selbst, in Visual Basic entwickelt und lässt sich auf dem Zielrechner als Dienst installieren.

Er durchsucht in einem festlegbaren Intervall ein zu definierendes Verzeichnis nach INI-Dateien und führt anschließend den im gleichen Ordner liegenden MailMotor mit den gefundenen INI-Dateien aus. Anschließend verschiebt er die verarbeitete INI-Datei in ein Archivverzeichnis, um zu verhindern, dass eMails mehrfach gesendet werden.

MailMotorAgent besitzt eine eigene Konfigurationsdatei (mailmotoragent.ini) mit folgenden Werten:

  • CheckInterval (Intervall in Sekunden)
  • WorkingPath (Arbeitsverzeichnis, in dem die zu verarbeitenden INI-Dateien liegen)
  • ArchivePath (Archivverzeichnis, in das die abgearbeiteten INI-Dateien verschoben werden)
  • Language (zu verwendende Sprachdatei für die Protokollierung von Fehlern)

Die Implementierung des VB-Programms als Dienst basiert auf dem frei verfügbaren "NT Service Control (NTSVC)" von Microsoft. Wer Näheres zu dieser Technik erfahren möchte, dem sei der zerbit-Artikel VB-Programm als Dienst starten ans Herz gelegt.

Die Installation des MailMotorAgents ist denkbar einfach. Am besten kopieren Sie zunächst die Datei ntsvc.ocx in Ihr Windows\System32-Verzeichnis. Nun muss das Control über die Kommandozeile oder den Ausführen-Dialog mit folgendem Aufruf registriert werden:

c:\windows\system32\regsvr32.exe c:\windows\system32\ntsvc.ocx

Für die Installation des MailMotorAgent gibt es drei Schalter:

  • /i  ...  Installation des Dienstes
  • /u  ...  Deinstallation des Dienstes
  • /h  ...  Hilfe

Für die Inbetriebnahme brauchen Sie nur folgenden Befehl auszuführen, wobei Sie den Programmordner an Ihre Gegebenheiten anpassen müssen:

c:\<Programmordner>\mailmotoragent.exe /i

Abbildung 3

Sie erhalten nun eine Meldung, das der Dienst nun noch über den Service Control Manager konfiguriert werden muss.

Damit gemeint ist der Dienste-Dialog aus dem Startmenübereich "Verwaltung". Dort müssen Sie sich entscheiden, ob er automatisch mit Windows gestartet werden soll oder nicht.

Zudem können Sie festlegen, mit welchem Konto der Dienst starten soll und ob er mit dem Desktop interagieren kann. Ist das Häkchen wie in der Abbildung gesetzt, so wird ein Dialog eingeblendet (siehe oben), der die Aktionen des MailMotorAgent anzeigt.

Ist alles fertig eingestellt und gestartet, läuft der MailMotor los, sobald im Arbeitsverzeichnis eine korrekt eingestellte INI-Datei landet.

Protokollierung

Jede Aktion des MailMotors wird in eine der INI-Datei gleichnamige Log-Datei geschrieben, wobei Datum, Uhrzeit und Ergebnis des Versandes festgehalten wird. Man hat bei der Konfiguration die Wahl zwischen einer kurzen oder einer ausführlichen Protokollierung.

Setzt man den MailMotor häufig mit unterschiedlichen Konfigurationen ein, die z.B. vom MailMotorAgent abgearbeitet werden, so kann man alle auftretenden Fehler zusätzlich auch in einer frei definierbaren globalen LOG-Datei protokollieren lassen

Lokalisierung

Sie haben die Möglichkeit alle Meldungen des Programms über Sprachdateien zu lokalisieren. Im Paket enthalten sind zur Zeit die Sprachen deutsch und englisch. Weitere Übersetzungen sind herzlich willkommen (eMail)!

Systemvoraussetzung

Die Anwendung wurde mit Visual Basic 6 entwickelt. Sie ist ohne Installation unter Windows XP SP1 und höher lauffähig, da dort bereits die VB-Runtime vorinstalliert ist. Das gleiche gilt für Windows Server 2003.
Sollte das Tool dennoch nicht laufen, kann die nachträgliche Installation der VB6-Runtime helfen, zu erhalten im Microsoft Download Center (vbrun60sp6.exe).

Sollte auf dem Zielsystem die Bibliothek mswinsck.ocx nicht vorhanden sein, die nicht in der VB6-Runtime enthalten ist, so kann diese hier heruntergeladen werden. Sie muss, nachdem sie ins Windows\System32-Verzeichnis kopiert worden ist, noch mit dem Befehl %systemroot%/system32/regsvr32 mswinsck.ocx registriert werden.

Auf Windows 2003 Server-Systemen ist der MailMotor prinzipiell auch lauffähig. Da er jedoch auf die mswinsck-Bibliothek aufsetzt und Microsoft diese als reine Client-Bibliothek entworfen hat, kann es laut MSDN auf Systemen mit installiertem IIS und COM+ zu Problemen kommen.

Historie


v1.0 Build 09
24.08.2005
Fehlerbehebung:
  • Korrekte Behandlung der Inhaltsvariablen, für den Fall, das keine angeben wurden
    (FEHLER in 'Main': 9 - Index außerhalb des gültigen Bereichs)
v1.3 Build 08
13.05.2006
Erweiterung:
  • Einführung von Inhaltsvariablen zur Parametrisierung des Nachrichtentextes und des Betreffs

Fehlerbehebung:
  • Korrekte Verarbeitung der Parameter 'ShowForm' und 'GlobalErrorLog'
  • Korrektes Einlesen von Konfigurationseinträgen mit bis zu 20480 Zeichen (bisher 1024 Zeichen)
v1.3 Build 05
05.05.2006
Erweiterung:
  • Einführung von Empfängervariablen zum Versand von personalisierten eMails
  • Möglichkeit zum Unterdrücken des Anzeigefensters
  • Möglichkeit zum Protokollieren von Fehler in einer globalen Datei
  • Neuer Verarbeitungsdienst "MailMotorAgent"
v1.2 Build 08
28.02.2006
Erweiterung:
  • Erweiterung des Parameters /ini: auf komplette Pfadangaben (auch UNC-Pfade)
  • Erweiterung des Parametersatzes auf alle Konfigurationseinträge
  • Ausgabe aller Meldungen über lokalisierte und anpassbare Sprachdateien
  • WICHTIG: Änderung der Namen und der Verwendung der Konfigurationseinträge Sender, Recipients und Attachments (bitte die Beschreibung der Abschnitte oder README lesen!)
v1.1 Build 03
25.12.2005
Erweiterung:
  • Senden von eMails über geschützte SMTP-Server; inkl. "POP First"-Authentifizierung
  • Möglichkeit zur Aufzeichnung der Kommunikation in der Log-Datei
v1.0 Build 08
11.11.2005
Fehlerbehebung:
  • Fix des Problems, daß Attachments unter bestimmten Umständen nicht verschickt werden.

25 Kommentare bislang...

  • Hallo,
    schönes Tool. Habe Version 1.3 im Einsatz. Selten kommt mal ein "Laufzeitfehler 70". Wer kann mir dazu etwas sagen ? Im log ist nichts zu finden:-(
    25
    Niels H. : Montag, 10. Mai 2010 13:24
  • Mailmotor zeigt in der Log-Datei
    25.10.2009 01:41:52 >>> ERROR in 'Main': 999 - No sender name configured
    Sendername ist aber eingetragen!
    Was ist der Fehler? Wie kann ich das in Ordnung bringen, damit er wieder funktioniert?
    24
    Ismail : Sonntag, 25. Oktober 2009 02:00
  • Hallo, ich habe das Programm getestet. Auf einer Einzelstation läuft es gut.
    Auf einem 2003 Server briches immer bei der Übertragung bei 16% ab.
    Im Logfile steht >> SMTP: 354 Enter mail, end with "." on a line by itself
    Wir benötigen aber die Lösung auf dem Server. Wir würden auch eine notwendige Anpassung bezahlen.
    Danke RR
    23
    Reinhard Riewe : Donnerstag, 11. Juni 2009 14:20
  • MailMotor 1.3 Build 09 löst bei mir die ContentVariablen z.B. CONTVAR1 nicht auf, obwohl eine ContentVariable1=abc.. definiert ist.
    Vielen Dank für die Unterstützung.
    22
    Joe Mächler : Mittwoch, 3. Oktober 2007 23:14
  • Hi Manfred,
    sehr gutes Programm.
    Läuft seit einem Jahr sehr erfolgreich und sicher.
    Seit 14 Tagen geht es nicht mer. Seither bekomme ich die Meldung:"Verbindungsfehler: 10061 - Herstellen der Verbindung wird absichtlich verweigert". Mein Admin und ich haben vieles ohne erfolg probiert. Hast du eine Idee.
    Gruß aus Karlsruhe Jürgen
    21
    Jürgen : Freitag, 7. September 2007 09:37

Dein Kommentar hierzu...


Kommentar-Feed für diesen Beitrag
Gravatare werden unterstützt .:. eMail-Adressen werden nicht veröffentlicht
 

RSS-Feed

Die URL des Standard-Newsfeed von zerbit.de lautet:

http://www.zerbit.de/rssfeed.aspx

Login


 

 

Statistik



kürzlich kommentiert

Agentarius

Community zur Klassifizierung
von User-Agents

.NET-Bibliotheken

Kleine Helfer für .NET-Lösungen

OutlookSignature 1.9

Outlook-Signaturen
zentral verwalten

MailMotor 1.3

Automatisch gesteuerter
Versand von eMails
Zugriffe: 16.511
Kommentare: 25


Download

  • mailmotor1309.zip
    129 KB - Programm ohne Setup
    Build 09 vom 27.08.2008
  • mailmotor1309_setup.zip
    1.892 KB - Komplettes Installationspaket mit MailMotorAgent und allen Bibliotheken
    Build 09 vom 27.08.2008

    (Bitte nur verwenden, wenn MailMotor nicht manuell zu Laufen bewegt werden kann)

Hinweis / Lizenz

  • Der Autor der Software übernimmt keinerlei Haftung für die korrekte Lauffähigkeit der Software oder für Schäden die aufgrund des Einsatzes auftreten!

    Die Software ist Freeware.

WordTemplateCleaner 1.0

Word-Dokumente von Ihren
Vorlagen trennen

Buttons & More

Banner Piraten-Partei