Re: Re: Re: Automatischer email-Versand aus einem PERL-Script ??? - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von Claus (4645 Beiträge) am Freitag, 3.Dezember.2010, 12:44. WWW: hammoniaweb.com
    Re: Re: Re: Automatischer email-Versand aus einem PERL-Script ???

      Genau hinschauen...;)

      kann das momentan leider nicht testen, aber der mail-Befehl muß direkt hinter

      do_keywords....


      if($cmd eq "mod" && $id ne "")
      

      {
        $_put{Text}=mod_links($_put{Text},1);
      
        get "Id==$id";   $_put{Kennung}=$kennung=$Kennung; $cmd=""; $id="";   $_put{Autor}=$nAutor if $nAutor ne "";   $_put{Autoren}=$Autoren;   $_put{Autoren}.=($Autoren eq ""?"":", ").$_put{Autor} if index(", $Autoren,", ", $_put{Autor},")<0;   if($Gesperrt)   {     out "Seite gesperrt. Änderungen nicht möglich.";   } else   {     put if $_put{Text} ne "" && $_put{Titel} ne "";   }   if($nAutor ne "")   {     get "Name==$nAutor", "users";     put ["Name", $nAutor], "users" if $_amount==0;   }
        do_keywords if $Stichworte ne $_put{Stichworte};
      mail 'scriptum@frankenzeit.de', "Neuer Eintrag in der Datenbank Frîjas Codex", "Es wurde ein neuer Datensatz in der Datenbank eingetragen, Hier_dein_zusätzlicher_Feldname: entweder $_put{Feldname} oder $Feldname, mußt Du mal testen";
      }
      

      hth

      Gruesse

      Claus


    Ihre Antwort:

    Name: EMail: EMail bei Antwort? WWW:
    Titel:
    Text:

    Neuer Eintrag


 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Frank Baldus (18 Beiträge) am Freitag, 3.Dezember.2010, 10:19.
    Automatischer email-Versand aus einem PERL-Script ???

      Liebe Experten,

      als völliger PERL-Laie gelingt es mir einfach nicht, eine automatische email bei einem neuen Eintrag in ein PERL-Script zu installieren. So, wie ich es gemacht habe, bekomme ich immer 3 Mails bei einer Änderung. Außerdem möchte ich gern den Inhalt eines bestimmten Feldes mit gemailt bekommen. Kann mir bitte jemand helfen? (Suche "ich@xyz.de" um zu meiner Version zu gelangen)

      +++

      <perl>
      

      $link="baseportal.pl?htx=$htx";
      $link.="&db=$db" if $db ne "";
      

      $_header="Content-type: text/css\n\n" if $css;

      unless($pure)
      {
      out <<EOF;
      <html><head><title>baseportal Wiki</title>
      <link href="$link&kennung=3&pure=1&css=1" type="text/css" rel="stylesheet">
      </head><body>
      EOF
      

      }


      sub esc { my $x=$_[0]; my $y=$_[1]?"":"\n"; $x=~ s/([^a-zA-Z0-9 $y^])/"^".unpack("C",$1)."^"/ge; $x }
      #sub esc { my $x=$_[0]; $x=~ s/([\=\*\-\_\+\!\^\|\[\]\~\$\@\%\:])/"^".unpack("C",$1)."^"/ge; $x }
      

      sub get_page
      {
        get "Kennung==$_[0] sort=- range=0,1";
      
        my $red=$Text eq ""?' style="color:red"':"";   my $new=$Datum ge datum("-7","intern")?' <span style="color:red">'.($_[1]?"***":"^42^^42^^42^").'</span>':"";
        local $index=""; do_headers($Text, "$link&kennung=$Kennung") if $do_index && !$_[1];
        return "<a href=\"$link&kennung=$Kennung\"$red>$Titel</a>$new$index";
      }
      

        s#\^#^94^#g; # ^ selbst escapen
        s#(^|\n)(\+\+\+\n)(.*?)(\n\+\+\+\n)#$1.$2.esc($3).$4#ges;        # codeblock
        s#\\([^\n\\]*)\\#"\\".esc($1)."\\"#ge;      # alles zwischen \...\ wird nicht ersetzt
        s#([\$\@\%]\w[\w{}\[\]()]*)#esc($1)#ge;              # $var[3]
      
        # Titel mit Kennung ersetzen (oder umgekehrt) - dadurch kann später beliebig der Titel geändert werden - was bei den anderen wikis nicht geht. Genial, wie ich finde ;-)))
        s/(\[([^\]]*)\])/
          my ($r,$t)=($1,$2);
          unless($t=~ m#^(include|copy|image|class)=(.*)#i || $t=~ m#^([^|]*)\|(.*)#)
          {
            if($_[1])
            {
              get ["Titel", "~=", $t];
              if($_amount==0)
              {
                put ["Titel", $t]; get ["Titel", "==!", $t]; mod "Id==$_id", ["Kennung", $_id]; my $k=$_id;
                get "Kennung==0 sort=- range=0,1"; put ["Kennung", 0, "Autoren", $Autoren, "Titel", $Titel, "Text", "$Text\n   - [$k]"];     # neue seite automatisch ins inhaltsverzeichnis eintragen
                $Kennung=$k;
              }
              $r="[$Kennung]"
            } else
            {
              get "Kennung==$t sort=- range=0,1";
              $r="[$Titel]"
            }
          }
          $r
        /ge;
      

        s#\^(\d{1,3})\^#pack("C",$1)#ge; # ^...^ ascii-code umsetzung

        return $_;
      }
      

      # letzten änderungen am wiki gesamt ausgeben

      if($cmd eq "changes")
      {
        out get_navi($kennung);  $kennung="";
        out "<h1 class=Titel>Letzte Änderungen</h1>";
        out "<div class=Text>Letzte Änderungen gesamt:<br><br>";
        out "<table class=table><tr><th>Titel</th><th>Zeit</th><th>Zeichen</th><th>Autor</th><th>Grund</th></tr>\n";
        my $red; my $lastdatum; my $thisdatum;
        get "Id==* sort=- range=0,100";
        while(get_next)
        {
          $red=$Text eq ""?' style="color:red"':"";
          $thisdatum=datum($Datum,"Tag.Monat.Jahr");
          out "<tr><td align=right>$thisdatum</td></tr>" if $lastdatum ne $thisdatum; $lastdatum=$thisdatum;
          out "<tr><td><a href=\"$link&id=$_id\"$red>$Titel</a></td><td align=right>".datum($Datum,"Stunde:Minute")."</td><td align=right>".($red?"":length($Text))."</td><td>$Autor</td><td>$Grund</td></tr>\n";
        }  
        out "</table></div>";
      }
      

      # stichworte ausgeben
      if($cmd eq "keywords")
      {
        get "Begriff==*", "keywords";
        out get_navi($kennung);  $kennung="";
        out "<h1 class=Titel>Stichwortverzeichnis</h1><ul><table width=60%>";
        my $lf="";
        while(get_next "keywords")
        {
          my $f=uc(substr($Begriff,0,1));
          out "<tr><td style=\"font-size:120%;font-weight:bold\"><br>$f</td></tr>" if $f ne $lf; $lf=$f;
          out "<tr><td valign=top>".convert_html($Begriff)."</td><td>";
          foreach $Kennung (split /#/, $Seiten)
          {
            get "Kennung==$Kennung" unless $Titel=$k{$Kennung}; $k{$Kennung}=$Titel;       # cache
            out "<a href=\"$link&kennung=$Kennung\">$Titel</a><br>";
          }
          out "</td></tr>";
        }
        out "</table></ul>";
      }
      

      # eintrag ändern

      if($cmd eq "mod" && $id ne "")
      {
        $_put{Text}=mod_links($_put{Text},1);
      
        get "Id==$id";   $_put{Kennung}=$kennung=$Kennung; $cmd=""; $id="";   $_put{Autor}=$nAutor if $nAutor ne "";   $_put{Autoren}=$Autoren;   $_put{Autoren}.=($Autoren eq ""?"":", ").$_put{Autor} if index(", $Autoren,", ", $_put{Autor},")<0;   if($Gesperrt)   {     out "Seite gesperrt. Änderungen nicht möglich.";   } else   {     put if $_put{Text} ne "" && $_put{Titel} ne "";   }
        if($nAutor ne "")   {     get "Name==$nAutor", "users";     put ["Name", $nAutor], "users" if $_amount==0;   }   do_keywords if $Stichworte ne $_put{Stichworte}; } # bestimmten eintrag ausgeben - vorcheck ob der eintrag noch neu ist: dann gleich zu do_mod

      if($kennung ne "" || $cmd eq "" || ($cmd eq "" && $id ne ""))
      {
        if($id ne "")
        {
          get "Id==$id";
        } else
        {
          $kennung||=0;
          get "Kennung==$kennung sort=- range=0,1";
        }
        if($Text eq "" || ($Bearbeitung && !$css && !$show)) { $id=$_id; $cmd="do_mod"; }
      }
      

      # änderungsformular ausgeben

      if($cmd eq "do_mod")
      {
        get "Id==$id" if $id ne "";
      
        $titel||=$Titel;   $autor=$Autor;   $autoren=$Autoren;   $bearbeitung=$Bearbeitung?" checked":"";   $stichworte=$Stichworte;   $kennung=$Kennung;   $_=mod_links($Text);   s/&/&/g; s/"/"/g; s/</</g; s/>/>/g;   $text=$_;
        my $zurueck=$bearbeitung?"<a href=\"$link&kennung=$kennung&show=1\">Seite anzeigen</a>":"<a href=\"$link&kennung=$kennung\">Ohne Änderungen zurück zur Seite</a>";   get "Id==*", "users";   $select="";   while(get_next "users")   {     $select.="<option".($autor eq $Name?" selected":"").">$Name";   }
        my $titeltext="Seite bearbeiten";   my $buttontext="Änderungen speichern";   get "Kennung==$kennung sort=- range=0,1";   if($id ne $Id)   {     $titeltext="Alte Version vom ".datum($Datum)." bearbeiten";     $buttontext="Diese Version zur aktuellen machen";   }

      mail 'scriptum@frankenzeit.de', "Neuer Eintrag in der Datenbank Frîjas Codex", "Es wurde ein neuer Datensatz in der Datenbank eingetragen";


      out <<EOF;
      <h1 class=Titel>$titeltext</h1>
      <div class=Text>
      <form action="$link&cmd=mod&id=$id" method="post" enctype="multipart/form-data">
      <input type="hidden" name="htx=" value="$htx">
      <input type="hidden" name="cmd=" value="mod">
      <input type="hidden" name="id=" value="$id">
      Titel: <input type="text" name="Titel:=" value="$titel" size=60><br>
      <textarea name="Text:=" style="width:100%" cols=60 rows=25>$text</textarea>
      Autor: <select name="Autor:="><option>$select</select> oder neu: <input type="text" name="nAutor=" size=16>
      Stichworte: <input type="text" name="Stichworte:=" value="$stichworte" size=40>
      <br><br>
      <table width=90%><tr><td><input type="submit" value="$buttontext" accessKey=s title="ALT + S - Abschicken"></td><td><a href="$link&kennung=85">Eingabehilfe</a></td><td align=right>$zurueck</td></tr></table>
      

      </form>
      </div>
      EOF
      

      $kennung=""; $id="";
      }
      # bestimmten eintrag ausgeben
      

      if($kennung ne "" || $cmd eq "" || ($cmd eq "" && $id ne ""))
      {
      

      # Ältere Versionen einer Seite ausgeben

      if($cmd eq "old")
      {
        get "Kennung==$kennung sort=- range=0,10";
      
        $datum=datum($Datum);   $titel="<a href=\"$link&kennung=$kennung\">$Titel</a>";   $autoren=$Autoren;   $autor=$Autor;   $id=$_id;   $text="Letzte Änderungen an dieser Seite:<br><br>";   $text.="<table><tr><th>Datum</th><th>Zeichen</th><th>Autor</th><th>Grund</th></tr>\n";   while(get_next)   {     $text.="<tr><td align=right><a href=\"$link&cmd=do_mod&id=$_id\">".datum($Datum)."</a></td><td align=right>".length($Text)."</td><td>$Autor</td><td>$Grund</td></tr>\n";   }   $text.="</table>";

      } elsif($css)
      {
        out $Text;
      } else
      {
      
        # Ergebnis sichern, weil beim Ersetzen vom Text auch ein get vorkommt, das diese überschreibt. mhhh, nicht allzu schön :-(   $datum=datum($Datum);   $titel=$Titel;   $autoren=$Autoren;   $autor=$Autor;   $gesperrt=$Gesperrt;   $id=$_id;
        $aelter=" - <a href=\"$link&cmd=old&kennung=$kennung\">Ältere Versionen</a>" if $_amount_query>1; # gibt mehr als 1 version   $_=$Text;
        $class=""; out <<EOF; $navi<h1 class=Titel>$titel</h1>$index <div class=Text>$text</div>

      <div class=info>
      <span class=Autoren>$aendertext $datum von $autor<br>
      Autoren: $autoren</span><p style="margin:10px"></p>
      $aender$aelter
      </div>
      <br>
      EOF
      }
      

      </perl>

     Antworten

    Beitrag von Claus (4645 Beiträge) am Freitag, 3.Dezember.2010, 11:33. WWW: hammoniaweb.com
    Re: Automatischer email-Versand aus einem PERL-Script ???

      Ich benutze das Wiki nicht, aber mal grob überflogen. Der mail-Befehl steht an der falschen Stelle...

      Nimm den mail-Befehl mal an der alten Stelle raus und füge es so in diesem Bereich ein:


      schnipp-----------




      # eintrag ändern
      

      if($cmd eq "mod" && $id ne "")
      {
        $_put{Text}=mod_links($_put{Text},1);
      
        get "Id==$id";   $_put{Kennung}=$kennung=$Kennung; $cmd=""; $id="";   $_put{Autor}=$nAutor if $nAutor ne "";   $_put{Autoren}=$Autoren;   $_put{Autoren}.=($Autoren eq ""?"":", ").$_put{Autor} if index(", $Autoren,", ", $_put{Autor},")<0;   if($Gesperrt)   {     out "Seite gesperrt. Änderungen nicht möglich.";   } else   {     put if $_put{Text} ne "" && $_put{Titel} ne "";   }   if($nAutor ne "")   {     get "Name==$nAutor", "users";     put ["Name", $nAutor], "users" if $_amount==0;   }   do_keywords if $Stichworte ne $_put{Stichworte};

      mail 'scriptum@frankenzeit.de', "Neuer Eintrag in der Datenbank Frîjas Codex", "Es wurde ein neuer Datensatz in der Datenbank eingetragen, Hier_dein_zusätzlicher_Feldname: entweder $_put{Feldname} oder $Feldname, mußt Du mal testen";
      }
      



      schnapp----------------


      hth


      Gruesse

      Claus

     Antworten

    Beitrag von Frank Baldus (18 Beiträge) am Freitag, 3.Dezember.2010, 11:53.
    Re: Re: Automatischer email-Versand aus einem PERL-Script ???

      Hallo Claus,

      danke für die schnelle Hilfe! Allerdings klappt es noch nicht so ganz. Ich bekomme nach einem Eintrag diesmal 8x die gleiche Mail. Der Inhalt vom Feld "Text" ist dabei. ... Was jetzt noch?

      Hilfst du nochmal? (mit einer schließenden Klammer danach kommt eine Syntax-Fehlermeldung)


      Frank

      +++

      if($cmd eq "mod" && $id ne "")
      {
        $_put{Text}=mod_links($_put{Text},1);
      
        get "Id==$id";   $_put{Kennung}=$kennung=$Kennung; $cmd=""; $id="";   $_put{Autor}=$nAutor if $nAutor ne "";   $_put{Autoren}=$Autoren;   $_put{Autoren}.=($Autoren eq ""?"":", ").$_put{Autor} if index(", $Autoren,", ", $_put{Autor},")<0;   if($Gesperrt)   {     out "Seite gesperrt. Änderungen nicht möglich.";   } else   {     put if $_put{Text} ne "" && $_put{Titel} ne "";   }
        if($nAutor ne "")   {     get "Name==$nAutor", "users";     put ["Name", $nAutor], "users" if $_amount==0;   }   do_keywords if $Stichworte ne $_put{Stichworte}; }

      mail 'scriptum@frankenzeit.de', "Neuer Eintrag in der Datenbank Frîjas Codex", "Es wurde ein neuer Datensatz in der Datenbank eingetragen, $Text";


      # bestimmten eintrag ausgeben - vorcheck ob der eintrag noch neu ist: dann gleich zu do_mod
      

      if($kennung ne "" || $cmd eq "" || ($cmd eq "" && $id ne ""))
      {
      

     Antworten

    Beitrag von Claus (4645 Beiträge) am Freitag, 3.Dezember.2010, 12:44. WWW: hammoniaweb.com
    Re: Re: Re: Automatischer email-Versand aus einem PERL-Script ???

      Genau hinschauen...;)

      kann das momentan leider nicht testen, aber der mail-Befehl muß direkt hinter

      do_keywords....


      if($cmd eq "mod" && $id ne "")
      

      {
        $_put{Text}=mod_links($_put{Text},1);
      
        get "Id==$id";   $_put{Kennung}=$kennung=$Kennung; $cmd=""; $id="";   $_put{Autor}=$nAutor if $nAutor ne "";   $_put{Autoren}=$Autoren;   $_put{Autoren}.=($Autoren eq ""?"":", ").$_put{Autor} if index(", $Autoren,", ", $_put{Autor},")<0;   if($Gesperrt)   {     out "Seite gesperrt. Änderungen nicht möglich.";   } else   {     put if $_put{Text} ne "" && $_put{Titel} ne "";   }   if($nAutor ne "")   {     get "Name==$nAutor", "users";     put ["Name", $nAutor], "users" if $_amount==0;   }
        do_keywords if $Stichworte ne $_put{Stichworte};
      mail 'scriptum@frankenzeit.de', "Neuer Eintrag in der Datenbank Frîjas Codex", "Es wurde ein neuer Datensatz in der Datenbank eingetragen, Hier_dein_zusätzlicher_Feldname: entweder $_put{Feldname} oder $Feldname, mußt Du mal testen";
      }
      

      hth

      Gruesse

      Claus

     Antworten

    Beitrag von Frank Baldus (18 Beiträge) am Freitag, 3.Dezember.2010, 14:31.
    Re: Re: Re: Re: Automatischer email-Versand aus einem PERL-Script ???

      Ah! So passt´s! Nochmals vielen Dank!


      Frank

     Antworten


     
 Liste der ersten 150 Einträge:Einklappen Zur Eingabe 
 Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.09s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!