Re: Support for named email addresses

 
From: "Dada Mail" <dada@PROTECTED>
Date: April 22nd 2006

Hello Robin,

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

If you'd like to, that's an option :)

It seems to me that your address validation code is just plain
wrong to be rejecting/trashing valid email addresses,

None of the email address validity code is mine - this is marked in
the code itself

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

Yeah - I have no idea what it says To say it's, "indecipherable to
humans" is probably incorrect, since, I think it was written by one
Saying it is, "indecipherable to most humans, just by glancing
over the code" - yeah, you're probably correct :)

But, like I state, the code isn't mine If you look at the bottom of
that file, you'll see this:

[snip]

=head1 CREDITS

Significant portions of this module are based on the ckaddr program written by Tom Christiansen and the RFC822 address pattern developed by Jeffrey Friedl Neither were involved in the construction of this module; all errors are mine

Thanks very much to the following people for their suggestions and bug fixes:

Otis Gospodnetic otis@DOMINIS com Kim Ryan kimaryan@PROTECTED au Pete Ehlke pde@PROTECTED Lupe Christoph David Birnbaum Achim Elizabeth Mattijsen (liz@dijkmat nl)

[/snip]

Saying all that, this code isn't even used in Dada Mail - it
actually has it's own email-validity check, which is located in dada/ DADA/App/Guts pm and looks sort of like this:

[snip]

sub check_for_valid_email {

This subroutine is modified out of BulkMail 2 0 by

James A Thomason III (jim3@psynet net)

Thanks James

 my $email = shift or undef;
 my $email_check = 0;

 my $atom = q<[!#$%&'*+\-/=?^`{|}~\w]>;
 my $qstring = q/"(?:[^"\\\\\015]|\\\
)+"/;
 my $word = "($atom+|$qstring)";
 $email =~ m/^$word\s*\<\s*(
+)\s*\>\s*$/;            #match  

beginning phrases

 $email = $2 if $2;                                    #if we've  

got a phrase, we've extracted the e-mail address #and stuck
it in $2, so set $email to it #if we
didn't have a phrase, the whole thing is the e-mail address

unless($email =~ m< ^\s*($word #any word
(see above) (?: $word)* #optionally
followed by a dot, and more words, as many times as we'd like @ #and an at
symbol $atom+ #followed
by as many atoms as we want (?: $atom+)* #optionally
followed by a dot, and more atoms, as many times as we'd like [a-zA-Z]{2,4})\s*$ #followed by
2 or 4 letters

xo){ $email_check = 1;

}

 my %exceptions;
 foreach(@EMAIL_EXCEPTIONS){$exceptions{$_}++}
 $email_check = 0 if exists($exceptions{$email});
 return $email_check;

}

[/snip]

Which is a lot simpler and is speckled with comments to help clarify
what's going on

The, Email::Valid module, that you're referencing is only used for
the mx_check method, I believe

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

I hope I addressed most of these concerns, but I do disagree with
almost everything you say in these statements :) My Perl skills and
style are fairly straightforward The Email::Valid module (the one
that is not mine) - especially that bit of code, even though is
incredibly complex in how it does, what it does was written by
someone much much much smarter than me and has been peer reviewed by
people just as smart as him - so much so, that it's been published in
book-form, and the book is on its second edition Email::Valid is
packaged in a reusable module, and for me, or anyone to use it, I
don't have to know exactly how it works - it's a black box All I
need to know is the API, which is explained pretty simply here:

http://search
cpan
org/~maurice/Email-Valid-0
15/Valid
pm

This is pretty commonplace in programming If this wasn't
commonplace, to build anything, I'd have to start with creating an
operating system first, and then the program - safe to say, not many
programs would be created :)

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

I'm sorry, at the current state, Dada Mail's the wrong tool to solve
your problem I posted what I thought would be a good solution to a
similar problem, and people agreed with me If you'd like to add this
feature into Dada Mail - I am 100% for it, but I'm currently not
going to do it (probably) at this time I cite this as a design
decision
and your arguments have yet to sway me :) In fact, your
argument was, "I don't like how you do things, so change it ", which
isn't really moving me and isn't how I operate

Can you give me any suggestions where in your code I'll need to
make modifications to fix this bug?

* Well, you'd have to change the backend that works with the  

subscription list - most all of that code is in the dada/DADA/ MailingList/Subscribers directory There are currently 3 different
backends for the subscription list, so they'll all have to be adjusted

* You'd also have to change how Dada Mail creates the confirmation  

links to allow for subscribing and unsubscribing That's mostly in
dada/DADA/App/FromatMessages pm

* You'd also have to change how Dada Mail creates the mail headers,  

so it knows that maybe(?) more information than just the address is
present in the subscription information and adjusts this You can
probably change that in, dada/DADA/Mail/Send pm

and anything else I haven't foreseen
 It's a lot of work

  • 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.