home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #3 / amigamamagazinepolishissue1998.iso / bazy / adm / arexx / adm-arexxmakros.lha / Netze / UMS / SendMails.adm next >
Text File  |  1995-06-04  |  6KB  |  202 lines

  1. /* $VER: SendMails.adm 1.1 (13.5.95)
  2.  
  3.    Written by Jan Geißler.
  4.  
  5.    Schreibt an alle, die eine EMail-Adresse angegeben haben, eine
  6.    EMail.
  7.  
  8.    Hier werden das MessageSystem UMS sowie "sumswrite" der "SUMSTools"
  9.    (siehe UMS-Distribution) verwendet. "sumswrite" muß sich im Suchpfad
  10.    befinden.
  11.  
  12.    Folgende "Formate" der EMail-Adressen werden von diesem Script
  13.    erkannt:
  14.  
  15.    Fido:                            Beispiel:
  16.    -----
  17.      FIDO=z:n/f.p                     FIDO=2:242/7.9
  18.      FIDO=z:n/f.p@Fidonet             FIDO=2:242/7.9@Fidonet
  19.      FIDO=realname@z:n/f.p            FIDO=Joe Fool@2:242/7.9
  20.      FIDO=realname@z:n/f.p@Fidonet    FIDO=Joe Fool@2:242/7.9@Fidonet
  21.      z:n/f.p@Fidonet                  2:242/7.9@Fidonet
  22.      realname@z:n/f.p@Fidonet         Joe Fool@2:242/7.9@Fidonet
  23.  
  24.    Anmerkungen:
  25.  
  26.    · Als "Realname" wird, wenn nicht angegeben, der Vor- und Zuname
  27.      der Adresse genommen.
  28.    · Ausgabeformat ist "z:n/f.p@Fidonet"
  29.  
  30.  
  31.    UUCP/UseNet:
  32.    ------------
  33.  
  34.      Alle Nachrichten, die _nicht_ in oben genannte Schemata passen
  35.      oder mit UUCP=<adresse> anfangen, werden von diesem Script als
  36.      Usenet-Mails verschickt.
  37.  
  38.    1.0 [jan]           - Erstes Release
  39.    1.1 [jan] 13.5.95   - FileRequester -> Mail auswählen
  40.                        - Z-Netz-Support entfernt
  41.  
  42. */
  43.  
  44. /*----------------------------------------------------------------------
  45.    HAUPTPROGRAMM: Adressen auslesen
  46. ----------------------------------------------------------------------*/
  47.  
  48. OPTIONS RESULTS
  49.  
  50. /* RexxReqTools-Library öffnen */
  51.  
  52. reqname = "rexxreqtools.library"
  53. if ~show("L", reqname) then
  54.   if ~addlib(reqname, 0, -30, 0) then do
  55.      say reqname "not found!"
  56.      EXIT
  57.   end
  58.  
  59. dir   = ""
  60. file  = "Mail"
  61. title = "Mail-Datei öffnen"
  62. ok    = "Mail laden"
  63.  
  64. filename = rtfilerequest(dir,file,title,ok)
  65. if filename = "" then do
  66.   call rtezrequest("Keine Datei ausgewählt", "Abbruch")
  67.   EXIT
  68. end
  69.  
  70.  
  71. ACTIVATEFIRST                /* Ersten Eintrag aktivieren */
  72. ADDRINMEM
  73. numAdr = RESULT              /* Anzahl der Einträge für Schleife */
  74.  
  75. DO FOR numAdr
  76.  
  77.     /* Flag-Abfrage: z.B. IF ADM.flags > 0 THEN DO */
  78.  
  79.        GETADDRESS ADM            /* Hole Adresse */
  80.  
  81.        txt = ADM.EMAIL1          /* Bearbeite EMail-Feld 1 */
  82.        CALL SendMail
  83.        txt = ADM.EMAIL2          /* Bearbeite EMail-Feld 2 */
  84.        CALL SendMail
  85.  
  86.     /* Flag-Abfrage: END  für IF ADM.flags ... THEN DO */
  87.  
  88.     ACTIVATENEXT              /* Nächste Adresse */
  89. END
  90.  
  91. EXIT                         /* Ende */
  92.  
  93.  
  94. /*----------------------------------------------------------------------
  95.    UNTERPROGRAMM: EMail schreiben
  96. ----------------------------------------------------------------------*/
  97.  
  98. SendMail:
  99.    msg = FALSE
  100.  
  101.    IF txt ~= "" THEN DO      /* Wenn überhaupt EMail-Text vorhanden */
  102.  
  103.       pos = POS("=",txt)     /* Wenn mit ZER=, FIDO= oder UUCP= ein- */
  104.                              /*                          getragen... */
  105.  
  106.       IF pos > 0 THEN DO     /* ... Netz herausfinden und von Adresse */
  107.          net = STRIP(SUBSTR(txt,1,pos-1))                  /* trennen */
  108.          adr = STRIP(SUBSTR(txt,pos+1,LENGTH(txt)-pos))
  109.       END
  110.       ELSE DO                /* andernfalls: Herausfinden, welches Netz */
  111.          adr = ""
  112.  
  113.          pos = POS("@Fidonet",txt)   /* Endung "@Fidonet"? */
  114.          IF pos>0 THEN DO
  115.             net = "FIDO"
  116.             adr = STRIP(txt)
  117.          END
  118.  
  119.          IF adr="" THEN DO           /* Ansonsten UUCP */
  120.             net = "UUCP"
  121.             adr = STRIP(txt)
  122.          END
  123.  
  124.       END
  125.  
  126.       IF net="FIDO" THEN DO          /* FIDO: Realname vorhanden? */
  127.          pos = POS(":",adr)
  128.  
  129.                                      /* wenn nicht -> aus ADM-Adresse */
  130.          IF pos < 3 THEN DO
  131.             name = ADM.firstName ADM.lastName
  132.             IF POS("@Fidonet",adr) < 1 THEN adr = adr || "@Fidonet"
  133.          END
  134.          ELSE DO                     /* Sonst Namen herausschneiden */
  135.             pos  = POS("@",adr)
  136.             name = STRIP(SUBSTR(adr,1,pos-1))
  137.             adr  = STRIP(SUBSTR(adr,pos+1,LENGTH(txt)-pos-1)) || "@Fidonet"
  138.          END
  139.  
  140.          SAY "FIDONET: " name "--" adr
  141.          msg = TRUE
  142.       END
  143.  
  144.       IF net="UUCP" THEN DO                /* UUCP= angegeben? */
  145.          name = STRIP(ADM.firstName ADM.lastName)
  146.          SAY "USENET:  " name "--" adr
  147.          msg = TRUE
  148.       END
  149.  
  150.       IF msg = FALSE THEN DO               /* Ansonsten: Nachricht ist UUCP */
  151.          name = STRIP(ADM.firstName ADM.lastName)
  152.          /* adr  = adr */
  153.       END
  154.  
  155.  
  156.       /* Message-Erzeugung:
  157.  
  158.          Das Script erstellt eine temporäre Datei, in der der Messagetext
  159.          und für "sumswrite" nötige Schlüsselwörter enthalten sind.
  160.          Danach wird "sumswrite" gestartet.
  161.  
  162.          Bei anderen Messagereadern muß der Teil geändert werden - je nach
  163.          Vorhandensein eines ARexx-Ports... aber außer UMS ist eh kaum ein
  164.          Programm für mehrere Netze geeignet... :)                         */
  165.  
  166.  
  167.       IF ~OPEN(datei,"ram:admtmpmsg","W") THEN DO   /* Ausgabedatei öffnen     */
  168.          SAY "Kann Ausgabedatei nicht öffnen!"
  169.          EXIT
  170.       END
  171.  
  172.       IF ~OPEN(quell,filename,"R") THEN DO   /* Ausgabedatei öffnen     */
  173.          SAY "Kann Standardmail" dateiname "nicht öffnen!"
  174.          ok = CLOSE(datei)
  175.          EXIT
  176.       END
  177.  
  178.       subject = READLN(quell)
  179.  
  180.       ok = WRITELN(datei,"ToName" name)
  181.       ok = WRITELN(datei,"ToAddr" adr)
  182.  
  183.       ok = WRITELN(datei,"Subject" subject)
  184.       ok = WRITELN(datei,"Organization" "ADM Development")
  185.       ok = WRITELN(datei,"-----------------------------------------------")
  186.       ok = WRITELN(datei,"Hallo" ADM.firstname || "!" )
  187.       ok = WRITELN(datei,"")
  188.  
  189.       DO UNTIL EOF(quell)
  190.          line = "*="
  191.          line = READLN(quell)
  192.          IF line ~= "*=" THEN ok = WRITELN(datei,line)
  193.       END
  194.  
  195.       ok = CLOSE(quell)
  196.       ok = CLOSE(datei)                          /* Datei schließen */
  197.  
  198.       ADDRESS COMMAND "sumswrite jan jg <ram:admtmpmsg"    /* SUMSWRITE starten */
  199.    END
  200.  
  201. RETURN
  202.