Script um Email-Filter erweitern

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Script um Email-Filter erweitern

    Hallo,

    ich habe leider absolut keine Ahnung von Perl, muss aber ein vorhandenes Script, das zum Versenden von Email dient etwas erweitern. Hier mal der Code Teil:

    Source Code

    1. if($data->{emailadresse})
    2. {
    3. $smtp->mail($senderAddress);
    4. $smtp->to($data->{emailadresse});
    5. $smtp->data();
    6. $smtp->datasend($msg->stringify);
    7. $smtp->dataend();
    8. printTimestamp();
    9. print "Mail ".$data->{betreff}." versendet an ".$data->{emailadresse}."\n";
    10. }
    11. else
    12. {
    13. print "Mail ".$data->{betreff}." nicht versendet, eMail Adresse leer\n";
    14. }
    Display All


    Bevor die Mail versendet wird, soll zusätzlich nach bestimmten Adressen gefilter werden. Der Filter sieht so aus:

    *@internal.meindomain.com

    also alle Mails, deren Empfänger, nach dem @ ein "internal.meindomain.com" haben sollen nicht versendet werden.

    Es kann sein, das hier noch mehr dazu kommt, also müssten die Filter wahrscheinlich in einem Array gespeichert werden (zumindest würd ich's in PHP so machen ;-)). Also so in der Richtung:

    $array = array('*@internal.meindomain.com', '*@internal2.meindomain2.de')

    Wäre schön, wenn mir jemand helfen könnte.

    70abc
    We raise hopes, here ... until they're old enough to fend for themselves.
    - Mike Callahan
  • "d0nUt" wrote:

    Hi, versuchs mal mit dieser Abfrage:

    Source Code

    1. if ($data->{emailadresse} !~ /.+\@internal\.meindomain\.com/) {
    2. print "Fehler";
    3. else
    4. print "Kein Fehler"


    Danke d0nUt,

    ich kann's leider nicht so ohne weiteres testen, daher noch eine Frage. Ich würde die Sache mit dem Array noch gerne aufgreifen, da sich die Liste der zu filternden Adresse noch erweitern kann. Würde das so funktionieren?

    Source Code

    1. my $regExs = ('/.+\@internal\.meindomain\.com/', '/.+\@internal2\.meindomain2\.de/');
    2. if($data->{emailadresse})
    3. {
    4. my $res = true;
    5. foreach $regEx ($regExs) {
    6. if ($data->{emailadresse} !~ $regEx) {
    7. $res = false;
    8. }
    9. }
    10. if($res == true) {
    11. $smtp->mail($senderAddress);
    12. $smtp->to($data->{emailadresse});
    13. $smtp->data();
    14. $smtp->datasend($msg->stringify);
    15. $smtp->dataend();
    16. printTimestamp();
    17. print "Mail ".$data->{betreff}." versendet an ".$data->{emailadresse}."\n";
    18. }
    19. }
    Display All


    Oder darf die RexEx im Array kein String sein?

    70abc
    We raise hopes, here ... until they're old enough to fend for themselves.
    - Mike Callahan
  • Redest du von zwei, drei oder von hunderten einträgen?

    Im kleinen Stil würde ich einfach den regulären Ausdruck ausbauen.

    Source Code

    1. if ($data->{emailadresse} !~ /.+\@(internal\.meindomain\.com)|internal2\.meindomain2\.com|internal3\.meindomain3\.com/) {


    Kann selbst auch kein Perl.. nur zusammengereihmt aus SelfHTML Quelltexten. Bei dem konkreten Fall denke ich aber, dass du genausogut ein Array aus Patterns aufbauen kannst wie ein Array aus Strings.

    Source Code

    1. my $regExs = (/.+\@internal\.meindomain\.com/, /.+\@internal2\.meindomain2\.de/);
  • "d0nUt" wrote:

    Hi, versuchs mal mit dieser Abfrage:

    Source Code

    1. if ($data->{emailadresse} !~ /.+\@internal\.meindomain\.com/) {
    2. print "Fehler";
    3. else
    4. print "Kein Fehler"


    Kleine Korrektur:

    Source Code

    1. if ($data->{emailadresse} =~ /.+\@internal\.meindomain\.com/) {
    2. print "Fehler";
    3. else
    4. print "Kein Fehler"


    70abc
    We raise hopes, here ... until they're old enough to fend for themselves.
    - Mike Callahan