Moin!
Ja klar, aber welche Zeichen sind gültig? Alle (ok, fast alle, zumindest alle, die man als sichtbares Zeichen auf der Tastatur eingeben kann). Ergo: Es bringt nichts.
was ist mit ü ä ö ^´` ~ ñ etc.?
Wenn nämlich Anführungszeichen gesetzt werden, kann man in denen praktisch jedes Zeichen als Usermailbox-Bezeichner verwenden.
Wie meinst du das jetzt?
Es gibt Mailadressen in der bekannten Form:
username@domain.tld
Und es gibt Mailadressen in dieser Form:
"Toller Username mit irgendwelchen @%$!#-Sonderzeichen"@domain.tld
RFC 822 sagt über die Zusammensetzung (ich hab ein schönes, aber engliches Dokument gefunden: http://www.cs.tut.fi/~jkorpela/rfc/822addr.html):
---schnipp---
addr-spec = local-part "@" domain ; global address
local-part = word *("." word) ; uninterpreted
; case-preserved
An word is either an atom or a quoted string.
An atom is a sequence of printable ASCII characters except space or any of the following:
()<>@,;:".[]
Positively speaking, this means that the valid constituents of an atom are the following:
!"#$%&'*+-/0123456789=?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ^_
`abcdefghijklmnopqrstuvwxyz{|}~
---schnapp---
Das letztgenannte sind also gültige Zeichen einer "normalen" Mailadresse. Das sind ziemlich viele, wie ich finde, und an etliche wird wohl nicht gedacht.
Außerdem gibts noch den "quoted string" (die zweite Form):
---schnipp---
A quoted string is formed by using normal ASCII quotation marks (") around a string, and it's a way of turning almost any string syntactically to a word. This means for example that a string containing a space (say, Jukka Korpela) becomes acceptable when quoted, in a context where the syntax requires a word. A quoted string may contain any ASCII character, but quotation mark (") or carriage return (CR control code) must be preceded by a reverse solidus (backslash, ), and the reverse solidus itself as a character must be written as doubled (\).
Note that RFC 822 limits the character repertoire to ASCII. In practice, other characters (such as ä or é) usually work inside quoted strings used for commenting purposes (and comments), but they must not be used in addresses proper.
---schnapp---
Mit anderen Worten: Alle ASCII-Zeichen (und das sind die, deren Code zwischen 0 und 127 liegt, sind akzeptable Zeichen, solange sie gequotet werden. Und das macht einfache Mailprüfungslösungen einfach unmöglich.
Für Perl gibts ein Modul, was die Überprüfung gemäß RFC822 erledigt. Das zu verwenden ist durchaus keine schlechte Idee, weil man davon ausgehen kann, dass die Programmierer sich wirklich zu 100% an den Standard gehalten haben und es deshalb wirklich nur dann "ungültige" Mailadressen gibt, wenn sie tatsächlich ungültig sind. Außerdem hat so ein Perl-Modul den nicht zu vernachlässigenden Vorteil, dass es lediglich von extern eingebunden wird und sich problemlos updaten läßt.
Der Vollständigkeit halber: Es gibt ein neues Dokument, RFC 2822, welches wohl einige kleine Änderungen am Standard vornimmt - das hab' ich jetzt nicht berücksichtig.
- Sven Rautenberg
ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|