Q: Wie bringe ich dem Hamster bei, dass er selbständig regelmäßig News und Mails holt und versendet?
A: Das folgende Skript veranlasst den Hamster, in regelmäßigen Abständen News und Mail zu holen und zu versenden.
Sie können über das Menü Skript → Skripte und Module verwalten → Dialog Skripte verwalten → Neu ein neues Skript anlegen und den kopierten Skriptcode dort einfügen. Das Skript muss noch an Ihre Konfiguration angepasst werden, lesen Sie dazu die Anmerkungen weiter unten nach dem Skript durch. Damit das Skript beim Start des Hamsters mitgestartet wird, gibt es zwei Möglichkeiten: Tragen Sie es entweder als Action ein, siehe dazu unter Menü: Einstellungen → Automatische Abläufe → Aktionen, oder hängen den Skriptnamen beim Start über die Kommandozeile an (bzw. erzeugen Sie eine Verknüpfung zur hamster.exe und ergänzen Sie den Skriptnamen so, wie im Folgenden zu lesen). Wenn das Skript MailNews.hsc heißt, sähe das also so aus:
hamster.exe MailNews.hsc
Zu jedem Befehl finden Sie weitere Informationen hier in der Hilfe-Datei, wenn sie unter Index den jeweiligen Befehlsnamen eingeben.
Weitere Skripte finden Sie im Skriptarchiv von Michael Gebert (siehe Linkliste).
#!hs2
### Skriptanfang ###
### Variablendefinition ###
var( $Einwahl )
varset( $eingewaehlt, 0 )
varset( $try, 0 )
### Einstellungen ###
$Einwahl = 1 #[1]
### Scheduler ###
AtAdd( Mail1, "07:00", "19:00", "1111111", 30, true ) #[2]
AtAdd( Mail2, "07:00", "19:00", "1111111", 15, true )
AtAdd( News1, "07:00", "19:00", "1111111", 60, true )
AtAdd( News2, "07:00", "19:00", "1111111", 15, true )
AtExecute
quit
### Subroutinen ###
sub Mail1
if( $Einwahl = 1 )
Einwahlroutine
if( $try >= 3 )
return
endif
endif
HamWaitIdle
HamMessage( 4, 0 ) #[5]
HamMessage( 5, 0 ) #[5]
HamWaitIdle
HamMailExchange #[3]
HamWaitIdle
HamMessage( 4, 1 ) #[5]
HamMessage( 5, 1 ) #[5]
if( $eingewaehlt = 1 )
HamRasHangup
$eingewaehlt = 0
endif
endsub
sub News1
if( $Einwahl = 1 )
Einwahlroutine
if( $try >= 3 )
return
endif
endif
HamWaitIdle
HamMessage( 3, 0 ) #[6]
HamNewsJobsClear
HamNewsJobsPostDef
HamNewsJobsPullDef
HamNewsJobsStart
HamWaitIdle
HamMessage( 3, 1 ) #[6]
if( $eingewaehlt = 1 )
HamRasHangup
$eingewaehlt = 0
endif
endsub
sub Mail2
if( HamGetStatus( 3, 7 ) > 0 )
Mail1
endif
endsub
sub News2
if( HamGetStatus( 3, 5 ) > 0 )
News1
endif
endsub
sub Einwahlroutine
$try = 1
if( !RasIsConnected )
$eingewaehlt = 1
while( HamRasDial("Provider","$1") != 0 ) #[4]
if( $try >= 3 )
$eingewaehlt = 0
warning( "Einwahl fehlgeschlagen!" )
return
endif
inc( $try )
sleep( 10000 )
endwhile
endif
endsub
### Skriptende ###
[1] Der Wert der Variablen $Einwahl bestimmt, ob der Hamster eine DFÜ-Verbindung aufbauen soll oder nicht. Wenn als Wert eine 1 eingetragen ist, prüft der Hamster, ob schon eine DFÜ-Verbindung besteht und wenn das nicht der Fall ist, wählt er sich ein (siehe hierzu auch [4]). Falls man z. B. eine Standleitung oder einen Router hat und deshalb keine DFÜ-Verbindung aufbauen muss, setzt man den Wert auf 0.
[2] Die erste AtAdd-Zeile veranlasst den Hamster, dass er von Montag bis Sonntag, zwischen 7.00 und 19.00 Uhr alle 30 Minuten die Subroutine Mail1 abarbeiten soll. Falls Sie möchten, dass der Hamster z. B. nur Mails austauscht, setzen Sie vor die letzten 2 AtAdd-Zeilen ein #, damit der Hamster diese ignoriert (sie werden so auskommentiert). Die einzelnen Subroutinen haben folgende Aufgaben:
Mail1: Empfangen und Versenden von E-Mails für alle im Menü Einstellungen → Mail(server) konfigurieren eingetragenen POP3- und SMTP-Server (siehe hierzu auch [3]).
Mail2: Schaut nach, ob E-Mails zum Versenden vorliegen, und falls das der Fall ist, wird die Subroutine Mails1 ausgeführt. Netzressourcen schonen
News1: Versenden und Empfangen von Artikeln für alle im Menü Einstellungen → News: Server, Gruppen & Ladeaufträge → Newsserver eingetragenen Newsserver und alle bei diesen abonnierten Gruppen.
News2: Schaut nach, ob Artikel zum Versenden vorliegen, und falls das der Fall ist, wird die Subroutine News1 ausgeführt.
Hinweis: Die im Skript angegebenen Intervalle, mit denen der Hamster den News- und Mailaustausch durchführt, sind vollkommen ausreichend. Da es sich bei News und Mail nicht um Echtzeitkommunikation handelt, sind kürzere Intervallzeiten unnötig, belasten nur übermäßig die News- und Mail-Server und werden von den Server-Administratoren nicht gerne gesehen, siehe dazu auch Netzressourcen schonen.
[3] Um den Befehl HamMailExchange zu verwenden, müssen die POP3- und SMTP-Server im Hamster unter Einstellungen → Mail: Server konfigurieren → POP3-Mailserver bzw. SMTP-Mailserver eingetragen sein.
Wenn E-Mails abhängig vom Absender über verschiedene SMTP-Server verschickt werden sollen, muss man den Befehl HamMailExchange ersetzen. Löschen Sie die Zeile und setzen Sie stattdessen folgendes ein (je nach Konfiguration, hier als Beispiel für je ein Benutzerkonto bei GMX und Web.de):
HamFetchMail( "pop.web.de" )
HamFetchMail( "pop.gmx.net" )
HamWaitIdle( 20000 )
HamSendMail("smtp.web.de","smtp","Benutzer1@web\.de")
HamSendMail("mail.gmx.net","smtp","Benutzer2@gmx\.de")
Falls der SMTP-Server ein Login über SMTP-Auth benötigt, verwenden Sie anstatt HamSendMail den Befehl HamSendMailAuth. Für unser Beispiel würden die Zeilen also so aussehen:
HamSendMailAuth("smtp.web.de","smtp","$2","","Benutzer1@web\.de" )
HamSendMailAuth("mail.gmx.net","smtp","$3","","Benutzer2@gmx\.de" )
Mit den Variablen $2 und $3 wird die Anmeldename-Passwort-Kombination übergeben. Diese Variablen sind im Menü Einstellungen → Benutzerverwaltung & Passworte → Passworte zu definieren.
Hinweis: Damit der Befehl HamSendMailAuth funktioniert, müssen die entsprechenden SMTP-Server im Menü Einstellungen → Mail: Server konfigurieren → SMTP-Mailserver auch als SMTP-AUTH markiert sein.
[4] Der Befehl HamRasDial baut eine mit <Provider> bezeichnete DFÜ-Verbindung auf und nimmt dazu die unter der Variablen $1 definierte Benutzername-Passwort-Kombination. Sie müssen <Provider> mit dem Namen ihrer DFÜ-Netzwerkverbindung ersetzen, den sie unter Arbeitsplatz → DFÜ-Netzwerk (Telefonbuch des DFÜ Netzwerkes) definiert haben (Groß- und Kleinschreibweise beachten). Die Variable $1 definieren Sie im Menü Einstellungen → Benutzerverwaltung & Passworte → Passworte.
[5] Mit den Befehlen HamMessage( 4, 0 ) und HamMessage( 5, 0 ) wird der interne POP3- bzw. SMTP-Server gestoppt, mit HamMessage( 4, 1 ) und HamMessage( 5, 1 ) wieder gestartet. Dies ist sicherer, falls Sie ausgehende Mails vor dem Versenden bzw. eingehende Mails nach dem Abholen überarbeiten lassen. Wenn Sie sicher sind, dass Sie die Abschaltung des internen POP3- bzw. SMTP-Servers nicht benötigen, setzen sie vor jede, mit #[5] markierte Zeile ein # (sie wird so auskommentiert).
[6] Mit dem Befehl HamMessage( 3, 0 ) wird der interne NNTP-Server gestoppt und mit HamMessage( 3, 1 ) wieder gestartet. Dies ist sicherer, falls Sie ausgehende Artikel vor dem Versenden bzw. eingehende Artikel nach dem Abholen überarbeiten lassen (z. B. von Korrnews und Copyif). Wenn Sie sicher sind, dass Sie die Abschaltung des internen NNTP-Servers nicht benötigen, setzen Sie vor jede, mit #[6] markierte Zeile ein # (sie wird so auskommentiert).