Re: Support for named email addresses

 
From: "Robin Rowe" <rower@PROTECTED>
Date: April 22nd 2006

Justin,

Congrats on the new release of dada mail

<< I think the three examples you've given could be valid statements you could have an a email header, for example, what you'll see in the, "To:", "From:", etc headers, but right now, Dada Mail only saves the, "here@example" address >>

Yes, I know

<< At this point, I think it would be a better idea to have the "Real" First name, and "Real" last name in separate fields, as well as having the address separate, when saving this information If Mailman works a little differently, this may just be a different design decision by them >>

Of course you want to focus on adding field support since you've made a public commitment to do so, but does that mean I have to? It seems to me that your address validation code is just plain wrong to be rejecting/trashing valid email addresses, that calling that a feature or suggesting it's merely a design decision can't make it not-a-bug

You didn't address my concern that the regex expression you're using for address validation is indecipherable to humans In your source code there's a comment that points to a URL that is supposed to help explain it, but that link is invalid In any case, that particular line of code looks like gibberish, an unwise design choice See code enclosed below

Just an opinion, your code generally uses a little too much Perl wizardry and hackerisms to be easy to maintain for others I've seen worse in other projects, but better is possible It would be helpful if all the code was in subroutines so there are clear entry and exit points Perl doesn't require this, but doing so makes large projects easier to understand

In order to be able to use dada mail I have to be able to import email addresses non-destructively What you suggest would lose information To strip off the person names to have bare email addresses is in no way an acceptable work-around

Can you give me any suggestions where in your code I'll need to make modifications to fix this bug? Do you want help fixing this bug or am I on my own?

Thank you,

Robin

Excerpt from Valid pm:

Regular expression built using Jeffrey Friedl's example in

Mastering Regular Expressions (http://www ora com/catalog/regexp/)

$RFC822PAT = <<'EOF'; [\040\t](?:([^\\x80-\xff\n\015()](?:(?:\[^\x80-\xff]|([^\\x80-\ xff\n\015()](?:\[^\x80-\xff][^\\x80-\xff\n\015()])))[^\\x80-\xf f\n\015()]))[\040\t])(?:(?:[^(\040)<>@,;:" \[]\000-\037\x80-\x ff]+(?![^(\040)<>@,;:" \[]\000-\037\x80-\xff])|"[^\\x80-\xff\n\015 "](?:\[^\x80-\xff][^\\x80-\xff\n\015"])")[\040\t](?:([^\\x80-\ xff\n\015()](?:(?:\[^\x80-\xff]|([^\\x80-\xff\n\015()](?:\[^\x80 -\xff][^\\x80-\xff\n\015()])))[^\\x80-\xff\n\015()]))[\040\t] )(?: [\040\t](?:([^\\x80-\xff\n\015()](?:(?:\[^\x80-\xff]|([^\ \x80-\xff\n\015()](?:\[^\x80-\xff][^\\x80-\xff\n\015()])))[^\\ x80-\xff\n\015()]))[\040\t])(?:[^(\040)<>@,;:" \[]\000-\037\x8 0-\xff]+(?![^(\040)<>@,;:" \[]\000-\037\x80-\xff])|"[^\\x80-\xff\n \015"](?:\[^\x80-\xff][^\\x80-\xff\n\015"])")[\040\t](?:([^\\x 80-\xff\n\015()](?:(?:\[^\x80-\xff]|([^\\x80-\xff\n\015()](?:\[^ \x80-\xff][^\\x80-\xff\n\015()])))[^\\x80-\xff\n\015()]))[\040 \t]))@[\040\t](?:([^\\x80-\xff\n\015()](?:(?:\[^\x80-\xff]|([ ^\\x80-\xff\n\015()](?:\[^\x80-\xff][^\\x80-\xff\n\015()])))[^\ \x80-\xff\n\015()]))[\040\t])(?:[^(\040)<>@,;:" \[]\000-\037\ x80-\xff]+(?![^(\040)<>@,;:" \[]\000-\037\x80-\xff])|[(?:[^\\x80- \xff\n\015[]]|\[^\x80-\xff])])[\040\t](?:([^\\x80-\xff\n\015() ](?:(?:\[^\x80-\xff]|([^\\x80-\xff\n\015()](?:\[^\x80-\xff][^\\ x80-\xff\n\015()])))[^\\x80-\xff\n\015()]))[\040\t])(?: [\04 0\t](?:([^\\x80-\xff\n\015()](?:(?:\[^\x80-\xff]|([^\\x80-\xff\ n\015()](?:\[^\x80-\xff][^\\x80-\xff\n\015()])))[^\\x80-\xff\n\ 015()]))[\040\t])(?:[^(\040)<>@,;:" \[]\000-\037\x80-\xff]+(?! [^(\040)<>@,;:" \[]\000-\037\x80-\xff])|[(?:[^\\x80-\xff\n\015[\ ]]|\[^\x80-\xff])])[\040\t](?:([^\\x80-\xff\n\015()](?:(?:\[^\ x80-\xff]|([^\\x80-\xff\n\015()](?:\[^\x80-\xff][^\\x80-\xff\n\01 5()])))[^\\x80-\xff\n\015()]))[\040\t]))|(?:[^(\040)<>@,;:" \[]\000-\037\x80-\xff]+(?![^(\040)<>@,;:" \[]\000-\037\x80-\xff] )|"[^\\x80-\xff\n\015"](?:\[^\x80-\xff][^\\x80-\xff\n\015"])")[^ ()<>@,;:" \[]\x80-\xff\000-\010\012-\037](?:(?:([^\\x80-\xff\n\0 15()](?:(?:\[^\x80-\xff]|([^\\x80-\xff\n\015()](?:\[^\x80-\xff][ ^\\x80-\xff\n\015()])))[^\\x80-\xff\n\015()]))|"[^\\x80-\xff\ n\015"](?:\[^\x80-\xff][^\\x80-\xff\n\015"])")[^()<>@,;:" \[]\ x80-\xff\000-\010\012-\037])<[\040\t](?:([^\\x80-\xff\n\015()](? :(?:\[^\x80-\xff]|([^\\x80-\xff\n\015()](?:\[^\x80-\xff][^\\x80- \xff\n\015()])))[^\\x80-\xff\n\015()]))[\040\t])(?:@[\040\t]* (?:([^\\x80-\xff\n\015()](?:(?:\[^\x80-\xff]|([^\\x80-\xff\n\015 ()](?:\[^\x80-\xff][^\\x80-\xff\n\015()])))[^\\x80-\xff\n\015() ]))[\040\t])(?:[^(\040)<>@,;:" \[]\000-\037\x80-\xff]+(?![^(\0 40)<>@,;:" \[]\000-\037\x80-\xff])|[(?:[^\\x80-\xff\n\015[]]|\ [^\x80-\xff])])[\040\t](?:([^\\x80-\xff\n\015()](?:(?:\[^\x80-\ xff]|([^\\x80-\xff\n\015()](?:\[^\x80-\xff][^\\x80-\xff\n\015()]* )))[^\\x80-\xff\n\015()]))[\040\t])(?: [\040\t](?:([^\\x80 -\xff\n\015()](?:(?:\[^\x80-\xff]|([^\\x80-\xff\n\015()](?:\[^\x 80-\xff][^\\x80-\xff\n\015()])))[^\\x80-\xff\n\015()]))[\040\t ])(?:[^(\040)<>@,;:" \[]\000-\037\x80-\xff]+(?![^(\040)<>@,;:" \ []\000-\037\x80-\xff])|[(?:[^\\x80-\xff\n\015[]]|\[^\x80-\xff]) ])[\040\t](?:([^\\x80-\xff\n\015()](?:(?:\[^\x80-\xff]|([^\\x 80-\xff\n\015()](?:\[^\x80-\xff][^\\x80-\xff\n\015()])))[^\\x80 -\xff\n\015()]))[\040\t]))(?:,[\040\t](?:([^\\x80-\xff\n\015( )](?:(?:\[^\x80-\xff]|([^\\x80-\xff\n\015()](?:\[^\x80-\xff][^\ \x80-\xff\n\015()])))[^\\x80-\xff\n\015()]))[\040\t])@[\040\t ](?:([^\\x80-\xff\n\015()](?:(?:\[^\x80-\xff]|([^\\x80-\xff\n\0 15()](?:\[^\x80-\xff][^\\x80-\xff\n\015()])))[^\\x80-\xff\n\015 ()]))[\040\t])(?:[^(\040)<>@,;:" \[]\000-\037\x80-\xff]+(?![^( \040)<>@,;:" \[]\000-\037\x80-\xff])|[(?:[^\\x80-\xff\n\015[]]| \[^\x80-\xff])])[\040\t](?:([^\\x80-\xff\n\015()](?:(?:\[^\x80 -\xff]|([^\\x80-\xff\n\015()](?:\[^\x80-\xff][^\\x80-\xff\n\015() ])))[^\\x80-\xff\n\015()]))[\040\t])(?: [\040\t](?:([^\\x 80-\xff\n\015()](?:(?:\[^\x80-\xff]|([^\\x80-\xff\n\015()](?:\[^ \x80-\xff][^\\x80-\xff\n\015()])))[^\\x80-\xff\n\015()]))[\040 \t])(?:[^(\040)<>@,;:" \[]\000-\037\x80-\xff]+(?![^(\040)<>@,;:" \[]\000-\037\x80-\xff])|[(?:[^\\x80-\xff\n\015[]]|\[^\x80-\xff ])])[\040\t](?:([^\\x80-\xff\n\015()](?:(?:\[^\x80-\xff]|([^\ \x80-\xff\n\015()](?:\[^\x80-\xff][^\\x80-\xff\n\015()])))[^\\x 80-\xff\n\015()]))[\040\t]))):[\040\t](?:([^\\x80-\xff\n\015 ()](?:(?:\[^\x80-\xff]|([^\\x80-\xff\n\015()](?:\[^\x80-\xff][^\ \x80-\xff\n\015()])))[^\\x80-\xff\n\015()]))[\040\t]))?(?:[^ (\040)<>@,;:" \[]\000-\037\x80-\xff]+(?![^(\040)<>@,;:" \[]\000- \037\x80-\xff])|"[^\\x80-\xff\n\015"](?:\[^\x80-\xff][^\\x80-\xff\ n\015"])")[\040\t](?:([^\\x80-\xff\n\015()](?:(?:\[^\x80-\xff]| ([^\\x80-\xff\n\015()](?:\[^\x80-\xff][^\\x80-\xff\n\015()]))) [^\\x80-\xff\n\015()]))[\040\t])(?: [\040\t](?:([^\\x80-\xff \n\015()](?:(?:\[^\x80-\xff]|([^\\x80-\xff\n\015()](?:\[^\x80-\x ff][^\\x80-\xff\n\015()])))[^\\x80-\xff\n\015()]))[\040\t])( ?:[^(\040)<>@,;:" \[]\000-\037\x80-\xff]+(?![^(\040)<>@,;:" \[]\ 000-\037\x80-\xff])|"[^\\x80-\xff\n\015"](?:\[^\x80-\xff][^\\x80-\ xff\n\015"])")[\040\t](?:([^\\x80-\xff\n\015()](?:(?:\[^\x80-\x ff]|([^\\x80-\xff\n\015()](?:\[^\x80-\xff][^\\x80-\xff\n\015()]) *))[^\\x80-\xff\n\015()]))[\040\t]))@[\040\t](?:([^\\x80-\x ff\n\015()](?:(?:\[^\x80-\xff]|([^\\x80-\xff\n\015()](?:\[^\x80- \xff][^\\x80-\xff\n\015()])))[^\\x80-\xff\n\015()]))[\040\t]) (?:[^(\040)<>@,;:" \[]\000-\037\x80-\xff]+(?![^(\040)<>@,;:" \[\ ]\000-\037\x80-\xff])|[(?:[^\\x80-\xff\n\015[]]|\[^\x80-\xff])] )[\040\t](?:([^\\x80-\xff\n\015()](?:(?:\[^\x80-\xff]|([^\\x80- \xff\n\015()](?:\[^\x80-\xff][^\\x80-\xff\n\015()])))[^\\x80-\x ff\n\015()]))[\040\t])(?: [\040\t](?:([^\\x80-\xff\n\015()]( ?:(?:\[^\x80-\xff]|([^\\x80-\xff\n\015()](?:\[^\x80-\xff][^\\x80 -\xff\n\015()])))[^\\x80-\xff\n\015()]))[\040\t])(?:[^(\040)<

@,;:" \[]\000-\037\x80-\xff]+(?![^(\040)<>@,;:" \[]\000-\037\x8 0-\xff])|[(?:[^\\x80-\xff\n\015[]]|\[^\x80-\xff])])[\040\t](?: ([^\\x80-\xff\n\015()](?:(?:\[^\x80-\xff]|([^\\x80-\xff\n\015()] *(?:\[^\x80-\xff][^\\x80-\xff\n\015()])))[^\\x80-\xff\n\015()]) )[\040\t]))>) EOF

$RFC822PAT =~ s/\n//g;

  • This mailing list is a public mailing list - anyone may join or leave, at any time.
  • This mailing list is a group discussion list (unmoderated)
  • Start a new thread, email: dadadev@dadamailproject.com

This is the developer discussion mailing list for Dada Mail.

If you are just looking for support Dada Mail, consult the message boards at:

https://forum.dadamailproject.com

Documentation for Dada Mail:

https://dadamailproject.com/d

Specifically, see the Error FAQ:

https://dadamailproject.com/d/FAQ-errors.pod.html

To post to this list, send a message to:

mailto:dadadev@dadamailproject.com

All subscribers of this list may post to the list itself.

Topics that are welcome:

  • Constructive critiques on the program (I like, "x", but, "y" needs some work - here's an idea on how to make this better...)
  • Bug/Error reports
  • Bug fixes
  • Request For Comments on any changes to the program
  • Help customizing Dada Mail for your own needs
  • Patches
  • Language Translations
  • Support Documentation/Doc editing, FAQ's, etc.
  • Discussion of any changes that you would like to be committed to the next version of Dada Mail -

Dada Mail is on Github:

https://github.com/justingit/dada-mail/

If you would like to fork, branch, send over PRs, open up issues, etc.

Privacy Policy:

This Privacy Policy is for this mailing list, and this mailing list only.

Email addresses collection through this mailing list are used explicitly to work within this email discussion list.

We only collect email addresses through our Closed-Loop Opt-In system.

We don't use your email address for any other purpose.

We won't be sharing your email address with any other entity.

Unsubscription can be done at any time. Please contact us at: justin@dadamailproject.com for any help regarding your subscription, including removal from the mailing list.

All mailing list messages sent from us will include a subscription removal link, which will allow you to remove yourself from this mailing list automatically, and permanently.

All consent to use your email address for any other purpose stated at the time of the mailing list subscription will also be revoked upon mailing list removal.