procmail
[Top] [All Lists]

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

2005-05-20 07:01:53
Thank you Dallman for your procmail code to solve this problem !!

I've got it working on my machine, and even made some small tweaks to
create a version that extracts from both the To and Cc headers, and
returns all email addresses (but not the friendly names) in both of
those headers, in a comma separated list.

Here's the tweaked version.




#  This routine takes a header containing both email addresses and
#  friendly names, and returns just the email addresses, in a comma
#  separated form.
#
#  It checks both the To and Cc headers.  

LINEBUF = 24000

 :0
 * HDRFLD ?? ^^()^^
 {
   SPACE       = ' '
   TAB         = '  '
   _ifs        = ${_ifs:-,$SPACE}

   HOSTCL      = [a-zA-Z0-9-]
   AHOST       = ($HOSTCL+[.])*$HOSTCL+

   ADDYCL      = "[^]><)([$SPACE$TAB,;:\"'@]"

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

   HDRFLDNAME

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

   :0
   { _HOLD = $HDRFLD }

 }


 :0 
 * $ _HOLD ?? ()\/$ADDYCL+(_at_)$AHOST[(_dot_)][a-zA-Z]+
 {
   ADDRESS = $MATCH
   STRIPPED_ADDRESSES =
${STRIPPED_ADDRESSES:+$STRIPPED_ADDRESSES${_ifs}}$ADDRESS

   :0
   * $ _HOLD ?? $\ADDRESS\/.+
   {
     _HOLD = $MATCH
     SWITCHRC = $_
   }

 } _HOLD HDRFLDNAME _ifs ADDRESS               # unset unneeded local
vars

 ##LOG = "Stripped addresses: >$STRIPPED_ADDRESSES<
 ##"


____________________________________________________________
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