procmail
[Top] [All Lists]

Re: How to extract multiple email addresses in To: header

2005-05-13 18:26:43
On Fri, May 13, 2005 at 10:47:08AM -0500, mark david mcCreary wrote:

Can someone point me to a recipe that will extract pure email
addresses (not the text verbage) from the To and Cc headers.

For example,

To: Joe Schmoo <joe(_at_)schmoo(_dot_)com>, Bob Smith 
<bob(_at_)smith(_dot_)org>
Cc: Sam Spade <sam(_at_)spade(_dot_)com>

I want to end up with a procmail variable containing

joe(_at_)schmoo(_dot_)com, bob(_at_)smith(_dot_)org, sam(_at_)spade(_dot_)com

Okay, I figured this out in all-procmail.  It's now more than an
hour past my bedtime, so it may well be that this can be further
improved.  But here it is.  Tested, seems to work:

 Hie thee to bed!
 [84.169.245.235 -> panix5] {dman} [0.26]
  2:56am [~/Mail] 776[0]> cat get-addies.rc

 ####################### start rcfile "get-addies.rc" #######################
 :0 
 * $ HDRFLD ?? $\MATCH.*\/[$ADDYSET]+(_at_)$AHOST[(_dot_)][a-zA-Z]+
 {
    STRIPPED_ADDRESSES = "${STRIPPED_ADDRESSES:+$STRIPPED_ADDRESSES, }$MATCH"
    SWITCHRC = $_
 }

 :0
 * HDRFLD ?? .
 { SWITCHRC }


 HOSTCL  = [a-zA-Z0-9-]
 AHOST   = "($HOSTCL+[.])*$HOSTCL+"
 ADDYSET = 'a-zA-Z0-9.=_+-'                # sensible set for address part

 SPACE   = ' '
 TAB     = '    '

 HDRFLDNAME = ${HDRFLDNAME:-To}
 :0
 * $ ^$HDRFLDNAME:.*\/[^$SPACE$TAB].*
 { HDRFLD = $MATCH }

 MATCH
 SWITCHRC = $_
 ######################## end rcfile "get-addies.rc" ########################

-- 
dman

____________________________________________________________
procmail mailing list   Procmail homepage: http://www.procmail.org/
procmail(_at_)lists(_dot_)RWTH-Aachen(_dot_)DE
http://MailMan.RWTH-Aachen.DE/mailman/listinfo/procmail