AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQl für Filter von Emailadressen nutzen
Thema durchsuchen
Ansicht
Themen-Optionen

SQl für Filter von Emailadressen nutzen

Ein Thema von Angel4585 · begonnen am 21. Sep 2006 · letzter Beitrag vom 22. Sep 2006
Antwort Antwort
Seite 2 von 2     12   
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#11

Re: SQl für Filter von Emailadressen nutzen

  Alt 22. Sep 2006, 11:16
in SQl will ich das doch.. in Delphi kann ich da keine Funktion nutzen.

nochmal:

in der Tabelle soll "*@xyz.xyz" oder "xyz*xyz@*.xyz" stehen und das "*" soll in der Abfrage in ein "%" gewandelt werden damit ich bzw MySQL damit arbeiten kann.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#12

Re: SQl für Filter von Emailadressen nutzen

  Alt 22. Sep 2006, 11:47
Moin,

wenn du unbedingt willst kannst du ja das * vorne an der E-Mail-Adresse wegschnibbeln und dort ein % hinzetzen, das geht auch per SQL. Ich sag dir aber ganz ehrlich dass ich das ziemlich bescheuert finde, vor allem weils keinen wirklichen Unterschied macht ob da "@foobar.com" oder "*@foobar.com" steht, jedenfalls was die Speicherung betrifft. Wenn du es aber ohne * schreibst, geht die Abfrage ziemlich einfach:
SELECT m.email, ms.id FROM mails m, mailservers ms WHERE m.email LIKE CONCAT(ms.server, '%') Also in mails stehen E-Mail-Adressen drin, in mailservers die Mailserver die du hast und eine ID.
Das obige Query gibt dir dann zu jedem Mailserver alle Mail-Adressen aus. In der Tabelle mailservers steht dann nur "@foobar.com", und nicht "*@foobar.com". Du kannst ja bei der Ausgabe den * hinmachen wenn er dir so wichtig ist

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#13

Re: SQl für Filter von Emailadressen nutzen

  Alt 22. Sep 2006, 12:00
ich ahb grad mal geschaut wie das phpBB amcht, das ersetzt beim eintragen alle "*" durch "%" oder so und beim anzeigen wieder zurück.. dacht das hat es auch direkt mit "*" drin.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#14

Re: SQl für Filter von Emailadressen nutzen

  Alt 22. Sep 2006, 12:11
Falsch. Komplett falsch.
Das Ding traegt *@foobar.com ein, und arbeitet spaeter damit, und das auch noch falsch.
Das Ding speichert ja nur gebannte E-Mail-Adressen der Form ab@foobar.com bzw. *@foobar.com. Beim Erstellen einer Session nimmt es die E-Mail-Adresse und macht folgendes:
SELECT [...] FROM [...] WHERE [...] OR ban_email LIKE 'meinemail@foobar.comOR ban_email LIKE '@foobar.com' So, da sind keine % oder _ drin, gar nichts. Wenn du also *@foobar.com wird also nicht erkannt. Das wird immer ein leeres Result-Set zurueckgeben. Das Query muesste so aussehn:
SELECT [...] FROM [...] WHERE [...] OR ban_email LIKE 'meinemail@foobar.comOR ban_email LIKE '*@foobar.com' Da ist nichts von * zu sehn.

Inwiefern das was mit deinem Problem zu tun hat, musst du mir aber auch erstmal erklaeren

Wenn du aber willst, mySQL kennt die Funktionen SUBSTRING und CONCAT. Du musst nur das * vorne wegschnibbeln und ein % reinmachen, wie ich dir bereits gesagt habe. Das ist aber definitiv weniger performant als eine Speicherung der E-Mail-Adresssen ohne *.

Vielleicht solltest du aber mal genauer erklaeren, was du wo und wie speicherst, und was du machen willst. Dann kann man dir vielleicht auch mal weiterhelfen...

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#15

Re: SQl für Filter von Emailadressen nutzen

  Alt 22. Sep 2006, 12:48
OK, also was genau ich mache:


Ich programmiere einen EMailclient als Teil eines Warenwirtschaftsprogramms.
Ein Dienst holt dabei von einem Emailkonto alle Mails ab und schreibt die(im Moment!!) in eine Tabelle "Emailarchiv", also den Absender, Betreff und den Pfad wo die EMail als "*.eml" gespeichert wird.
Zusätzlich wird jede Mail geprüft ob sie auf eine bestimmte Weise formatiert ist und dann entsprechend weiterverarbeitet, was aber hier uninteressant ist.

Wenn mein Dienst jetzt die ganzen Mails holt, sind da haufenweise SPAM-Mails a la "Viagra is the best" oder sowas drin.

Jetzt habe ich mir überlegt, dass ich doch eine tabelle mit Emailadressen anlegen könnte, wo ich die Absender der SPAM-Mails eintrage und die Mails dieser Absender beim Abholen anstatt in das "Emailarchiv" in das "Spamarchiv" schiebe und diese dann auch nicht weiterverarbeite.

Das funktioniert soweit ganz gut, es landen jeden Tag allerdings nur von 50 Mails 2 oder so im SPAM-Archiv.
Jetzt ist mir aufgefallen das die Domain oft die selbe ist, also anstatt xyz@xyz.xyz, beim nächstenmal dann halt abc@xyz.xyz verwendet wird, aber der Inhalt gleich bleibt. Deswegen will ich die komplette Domain aussortieren, also "*@xyz.xyz" zu den Emailadressen hinzufügen, das * durch ein % in der Abfrage zu ersetzen und dann mit einem LIKE "%@xyz.xyz" diese Mails rausfiltern.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#16

Re: SQl für Filter von Emailadressen nutzen

  Alt 22. Sep 2006, 13:25


Das ist die Funktion:

Delphi-Quellcode:
function TSNMailservice.IsSpam(AAdress: string): Boolean;
begin
Result:=False;
try
  try
    tqspamadressen.SQL.Text:='SELECT * FROM spamadressen WHERE "'+AAdress+'" LIKE REPLACE(Email,"*","%")';
    tqspamadressen.Active:=True;
    Result:=not tqspamadressen.IsEmpty;
  except
    Result:=False;
  end;
finally
  tqspamadressen.Active:=False;
  end;
end;

hätt mir au wer sagen könn das es REPLACE in SQL gibt und es funktioniert.. wenn ich "*@web.de" in die Tabelle eintrage werden alle einkommenden Mails von @web.de in den SPAM-Ordner geschoben

THX für eure Hilfe
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz