ToDo: Kontrolle

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“).