[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [PATCH] mail address handling in mailer.py

From: C. Michael Pilato <cmpilato_at_collab.net>
Date: 2006-05-30 15:23:44 CEST

Mathias Weinert wrote:
> Hi there,
> I am still hoping that some will commit the following patch to mailer.py
> so please let my wishes get true...
> This patch adds a new parameter to the configuration file which allows
> to use different characters for splitting the to_addr.
> This is usefull for using additional name information in the mail
> addresses. Example:
> to_addr_split_char = ,
> to_addr = "The great Wallace" <wallace@atanyaddress>, "little Grommit" <grommit@propablyatthesameaddress>

I find this two-option setup silly. Just make the code smart enough to know
that email records are comma-delimited, and any commas in the quoted regions
don't count towards that splitting. I whipped up the following helper
function for performing such a split, but I'm sure there's probably a
slicker/quicker way to do it:

import sys

def parse_addrs(addr_line):
    """Split ADDR_LINE on commas, but don't count commas that enclosed
    in doublequote-delimited regions. Doublequote characters
    preceeded by a backslash (\) don't count as delimiters for those
    regions, either."""

    quoted = 0
    commas = []
    for i in range(len(addr_line)):
        if addr_line[i] == '"':
            if ((i and addr_line[i-1] != '\\') or (not i)):
                if quoted:
                    quoted = 0
                    quoted = 1
        elif addr_line[i] == ',':
            if not quoted:
    pieces = []
    for i in range(len(commas)):
        comma = commas[i]
        if not i:
    if i:
    return filter(None, pieces)

if __name__ == "__main__":
    addrs = parse_addrs(sys.argv[1])
    print '\n'.join(addrs)

C. Michael Pilato <cmpilato@collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand

Received on Tue May 30 15:25:40 2006

This is an archived mail posted to the Subversion Dev mailing list.