help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How do I check if the format of an email address is valid?


From: Reiner Steib
Subject: Re: How do I check if the format of an email address is valid?
Date: Fri, 31 Mar 2006 01:30:02 +0200
User-agent: Gnus/5.110004 (No Gnus v0.4) Emacs/22.0.50 (gnu/linux)

On Fri, Mar 31 2006, Lennart Borgman wrote:

> Pascal Bourguignon wrote:
>> Lennart Borgman <lennart.borgman.073@student.lu.se> writes:
>>> - `message-valid-fqdn-regexp' (which is copied to
>>> gnus-button-valid-local-part-regexp') 

You meant `gnus-button-valid-fqdn-regexp' here.

>>> has a list of TLD:s. Is this really wise?

Consider the purpose of these variables in Gnus:

  `message-valid-fqdn-regexp' is used to exclude obvious bogus system
  names from being used as the domain part in a Message-ID.

  `gnus-button-valid-fqdn-regexp' is used when creating buttons
  (clickable links) when a mail address or a Message-ID appears in the
  body of mail/usenet articles: Say null123@marauder.physik.uni-ulm.de
  or reiner.steib@gmx.de etc.  The regexp should catch virtually all
  valid addresses without generating too many false positives,
  e.g. TeX code \def\foo@randomstuff.bar{} or similar.

If we miss some new TLD, it's not critical and the user can easily add
it or upgrade Gnus.

>>> I guess there will be new TLD:s.  (In fact there may already be
>>> some that are not in this list.)

Is anyone aware of any missing TLDs?

(defcustom message-valid-fqdn-regexp
  (concat "[a-z0-9][-.a-z0-9]+\\." ;; [hostname.subdomain.]domain.
          ;; valid TLDs:
          "\\([a-z][a-z]" ;; two letter country TDLs
          "\\|biz\\|com\\|edu\\|gov\\|int\\|mil\\|net\\|org"
          "\\|aero\\|coop\\|info\\|name\\|museum"
          "\\|arpa\\|pro\\|uucp\\|bitnet\\|bofh" ;; old style?
          "\\)")
  "Regular expression that matches a valid FQDN."
  ;; see also: gnus-button-valid-fqdn-regexp
  :version "22.1"
  :group 'message-headers
  :type 'regexp)
     
>> You can customize the variable!

BTW, the tin newsreader even hard-codes a matrix of (in)valid
two letter country domains. The user/admin has to recompile to add new
domains.  IIRC it's used when checking for a valid FQDN.

> This argument can be used in the reverse direction too. Do most
> users really gain something from the list of known TLD:s in the
> regexp?

For the purpose in Gnus: Yes, IMHO.  What would you suggest to use
instead?

>>> - It is maybe a pitty that you have to load those big modules (message
>>> and gnus) just to get the patterns.
>> You only need to (require 'message) to get message-valid-fqdn-regexp.
[...]
>> And you only need to (require 'gnus-art) to get the other variables.

Well, `gnus-art.el' will in turn load "half of the moon": ;-)

,----[ emacs -Q -f ielm ]
| ELISP> (length features)
| 76
| ELISP> (require 'gnus-art)
| gnus-art
| ELISP> (length features)
| 130
`----

,----[ emacs -Q -f ielm ]
| ELISP> (length features)
| 76
| ELISP> (require 'message)
| message
| ELISP> (length features)
| 107
`----
   
> I just want to check the format of email addresses entered on a html page.

And you'll post-process it using Emacs?

>>> And then I can not stop myself from wondering if there really are any
>>> format of email addresses that asures that conforming addresses are
>>> actually existing email adresses ;-)
>> Of course not.    
> And I will probably never learn the fine art of joking in email messages ;-)

I wasn't joking. :-)  Of course not from the format, but...

Basically you need to do something like "host -t mx" (using
`dig.el'?), connect to the smtp port, send "RCPT TO:" and parse the
output ("user unknown"?).  But I'm not sure if this still works
nowadays.

Bye, Reiner.
-- 
       ,,,
      (o o)
---ooO-(_)-Ooo---  |  PGP key available  |  http://rsteib.home.pages.de/





reply via email to

[Prev in Thread] Current Thread [Next in Thread]