SQL Clone
SQLServerCentral is supported by Redgate
 
Log in  ::  Register  ::  Not logged in
 
 
 


Does anyone have a good 'validate email' function?


Does anyone have a good 'validate email' function?

Author
Message
sqldriver
sqldriver
SSCrazy
SSCrazy (2.2K reputation)SSCrazy (2.2K reputation)SSCrazy (2.2K reputation)SSCrazy (2.2K reputation)SSCrazy (2.2K reputation)SSCrazy (2.2K reputation)SSCrazy (2.2K reputation)SSCrazy (2.2K reputation)

Group: General Forum Members
Points: 2234 Visits: 2536
Steve Jones - SSC Editor (8/28/2014)
It's tough, as Troy Hunt found out.

http://www.troyhunt.com/2013/11/dont-trust-net-web-forms-email-regex.html

Honestly, it's good to try to validate, but don't discard data that doesn't meet the standard you set. It's highly likely your validation is broken. Even if you say "it's all North America", people move all the time and you might end up with foreign items over time. Or your company expands.

Throw suspected items into a queue and have someone review them. Contact the person. If you do this in a front end form, give the user a way to bypass validation and give their email with a captcha or some other type of "human" validation that their email is correct.


This seems sort of directed at me.

The email addresses I was processing were not from a web form, they were provided to us either by clients, or by data marts. Nothing was deleted, it was just given a 'status flag' that meant the email inspection found something wonky. A certain percentage of the contact information was expected to be inaccurate or incorrect. So if the project was running a long time without a high response rate, and the PM didn't want to buy more sample, the remainder email addresses could be released.

I had to do a lot of similar stuff with phone number cleaning/checking and formatting so the dialer could make the calls correctly.

Market research is a bummer.

*shrug*
Nadrek
Nadrek
SSCarpal Tunnel
SSCarpal Tunnel (4.6K reputation)SSCarpal Tunnel (4.6K reputation)SSCarpal Tunnel (4.6K reputation)SSCarpal Tunnel (4.6K reputation)SSCarpal Tunnel (4.6K reputation)SSCarpal Tunnel (4.6K reputation)SSCarpal Tunnel (4.6K reputation)SSCarpal Tunnel (4.6K reputation)

Group: General Forum Members
Points: 4614 Visits: 2741
GilaMonster (8/27/2014)
sqldriver (8/27/2014)
GilaMonster (8/27/2014)
sqldriver (8/27/2014)
I used to use this. Not perfect by any stretch but got most of the junk out.


Does it flag this as invalid?
MyAccount+SSC@Gmail.com

http://gmailblog.blogspot.com/2008/03/2-hidden-ways-to-get-more-from-your.html


It does.


Which is why I point people at that linked blog post on this topic, as what is allowed is much broader than most regex statements allow.


Yes, my favorite reference is Mail::RFC822::Address: regexp-based address validation

Which has a sample Perl RegEx for RFC822 validation, NOT including the arbitrarily nested comments allowed by the RFC.

(?Sad?:\r)?[ \t])*(?Sad?Sad?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?Sad?:\r)?[ \t]))*"(?Sad?:
\r)?[ \t])*)(?:\.(?Sad?:\r)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad
?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?Sad?:\r)?[
\t]))*"(?Sad?:\r)?[ \t])*))*@(?Sad?:\r)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\0
31]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\
](?Sad?:\r)?[ \t])*)(?:\.(?Sad?:\r)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+
(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:
(?:\r)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?Sad?:\r)?[ \t]))*"(?Sad?:\r)
?[ \t])*)*\<(?Sad?:\r)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\
r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?Sad?:\r)?[
\t])*)(?:\.(?Sad?:\r)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)
?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?Sad?:\r)?[ \t]
)*))*(?:,@(?Sad?:\r)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[
\t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?Sad?:\r)?[ \t])*
)(?:\.(?Sad?:\r)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?Sad?:\r)?[ \t])*))*)
*Sad?Sad?:\r)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+
|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?Sad?:\r)?[ \t]))*"(?Sad?:\r
)?[ \t])*)(?:\.(?Sad?:\r)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:
\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?Sad?:\r)?[ \t
]))*"(?Sad?:\r)?[ \t])*))*@(?Sad?:\r)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031
]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](
?Sad?:\r)?[ \t])*)(?:\.(?Sad?:\r)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?
Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?Sad?
:\r)?[ \t])*))*\>(?Sad?:\r)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?
Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?Sad?:\r)?
[ \t]))*"(?Sad?:\r)?[ \t])*)*Sad?Sad?:\r)?[ \t])*(?Sad?Sad?:[^()<>@,;:\\".\[\]
\000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|
\\.|(?Sad?:\r)?[ \t]))*"(?Sad?:\r)?[ \t])*)(?:\.(?Sad?:\r)?[ \t])*(?:[^()<>
@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"
(?:[^\"\r\\]|\\.|(?Sad?:\r)?[ \t]))*"(?Sad?:\r)?[ \t])*))*@(?Sad?:\r)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?Sad?:\r)?[ \t])*)(?:\.(?Sad?:\r)?[ \t])*(?
:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[
\]]))|\[([^\[\]\r\\]|\\.)*\](?Sad?:\r)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-
\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(
?Sad?:\r)?[ \t]))*"(?Sad?:\r)?[ \t])*)*\<(?Sad?:\r)?[ \t])*(?:@(?:[^()<>@,;
:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([
^\[\]\r\\]|\\.)*\](?Sad?:\r)?[ \t])*)(?:\.(?Sad?:\r)?[ \t])*(?:[^()<>@,;:\\"
.\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\
]\r\\]|\\.)*\](?Sad?:\r)?[ \t])*))*(?:,@(?Sad?:\r)?[ \t])*(?:[^()<>@,;:\\".\
[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\
r\\]|\\.)*\](?Sad?:\r)?[ \t])*)(?:\.(?Sad?:\r)?[ \t])*(?:[^()<>@,;:\\".\[\]
\000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]
|\\.)*\](?Sad?:\r)?[ \t])*))*)*Sad?Sad?:\r)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \0
00-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\
.|(?Sad?:\r)?[ \t]))*"(?Sad?:\r)?[ \t])*)(?:\.(?Sad?:\r)?[ \t])*(?:[^()<>@,
;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?
:[^\"\r\\]|\\.|(?Sad?:\r)?[ \t]))*"(?Sad?:\r)?[ \t])*))*@(?Sad?:\r)?[ \t])*
(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|\[([^\[\]\r\\]|\\.)*\](?Sad?:\r)?[ \t])*)(?:\.(?Sad?:\r)?[ \t])*(?:[
^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]
]))|\[([^\[\]\r\\]|\\.)*\](?Sad?:\r)?[ \t])*))*\>(?Sad?:\r)?[ \t])*)(?:,\s*(
?Sad?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|"(?:[^\"\r\\]|\\.|(?Sad?:\r)?[ \t]))*"(?Sad?:\r)?[ \t])*)(?:\.(?Sad
?:\r)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[
\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?Sad?:\r)?[ \t]))*"(?Sad?:\r)?[ \t
])*))*@(?Sad?:\r)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t
])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?Sad?:\r)?[ \t])*)(?
:\.(?Sad?:\r)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|
\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?Sad?:\r)?[ \t])*))*|(?:
[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\
]]))|"(?:[^\"\r\\]|\\.|(?Sad?:\r)?[ \t]))*"(?Sad?:\r)?[ \t])*)*\<(?Sad?:\r)
?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["
()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?Sad?:\r)?[ \t])*)(?:\.(?Sad?:\r)
?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>
@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?Sad?:\r)?[ \t])*))*(?:,@(?Sad?:\r)?[
\t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,
;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?Sad?:\r)?[ \t])*)(?:\.(?Sad?:\r)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?Sad?:\r)?[ \t])*))*)*Sad?Sad?:\r)?[ \t])*)?
(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|"(?:[^\"\r\\]|\\.|(?Sad?:\r)?[ \t]))*"(?Sad?:\r)?[ \t])*)(?:\.(?Sad?:
\r)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z|(?=[\[
"()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?Sad?:\r)?[ \t]))*"(?Sad?:\r)?[ \t])
*))*@(?Sad?:\r)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])
+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?Sad?:\r)?[ \t])*)(?:\
.(?Sad?:\r)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?Sad?Sad?:\r)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?Sad?:\r)?[ \t])*))*\>(?Sad
?:\r)?[ \t])*))*)?;\s*)


P.S. I tried code="plain" but the sad faces, well, they're not stopped by that.
Gazareth
Gazareth
SSCertifiable
SSCertifiable (7.8K reputation)SSCertifiable (7.8K reputation)SSCertifiable (7.8K reputation)SSCertifiable (7.8K reputation)SSCertifiable (7.8K reputation)SSCertifiable (7.8K reputation)SSCertifiable (7.8K reputation)SSCertifiable (7.8K reputation)

Group: General Forum Members
Points: 7818 Visits: 6046
Nadrek (9/2/2014)

but the sad faces, well, they're not stopped by that.


They're not stopped by that. They cannot be stopped by anything. They're the imprisoned souls needed to power this most unholy of regexes, staring back at you from the abyss. They are coming.
Ed Wagner
Ed Wagner
SSC Guru
SSC Guru (50K reputation)SSC Guru (50K reputation)SSC Guru (50K reputation)SSC Guru (50K reputation)SSC Guru (50K reputation)SSC Guru (50K reputation)SSC Guru (50K reputation)SSC Guru (50K reputation)

Group: General Forum Members
Points: 50163 Visits: 10844
sqldriver (8/28/2014)

The email addresses I was processing were not from a web form, they were provided to us either by clients, or by data marts. Nothing was deleted, it was just given a 'status flag' that meant the email inspection found something wonky. A certain percentage of the contact information was expected to be inaccurate or incorrect. So if the project was running a long time without a high response rate, and the PM didn't want to buy more sample, the remainder email addresses could be released.

I had to do a lot of similar stuff with phone number cleaning/checking and formatting so the dialer could make the calls correctly.

Market research is a bummer.

Hey, you know it's your fault that the invalid email addresses and phone numbers don't work. Because they're invalid, that shouldn't impact the response rate, should it? Your situation is certainly not unique. Guess who else works in market research? :-D


Tally Tables - Performance Personified
String Splitting with True Performance
Best practices on how to ask questions
Sean Lange
Sean Lange
SSC Guru
SSC Guru (63K reputation)SSC Guru (63K reputation)SSC Guru (63K reputation)SSC Guru (63K reputation)SSC Guru (63K reputation)SSC Guru (63K reputation)SSC Guru (63K reputation)SSC Guru (63K reputation)

Group: General Forum Members
Points: 63634 Visits: 17966
Nadrek (9/2/2014)
[quote]

Which has a sample Perl RegEx for RFC822 validation, NOT including the arbitrarily nested comments allowed by the RFC.


Heaven help you if you have to debug that thing. That to me does not look like a viable piece of code I would put anywhere near my system. That whole being able to support my code thing comes to mind. :-P

_______________________________________________________________

Need help? Help us help you.

Read the article at http://www.sqlservercentral.com/articles/Best+Practices/61537/ for best practices on asking questions.

Need to split a string? Try Jeff Modens splitter.

Cross Tabs and Pivots, Part 1 – Converting Rows to Columns
Cross Tabs and Pivots, Part 2 - Dynamic Cross Tabs
Understanding and Using APPLY (Part 1)
Understanding and Using APPLY (Part 2)
Ed Wagner
Ed Wagner
SSC Guru
SSC Guru (50K reputation)SSC Guru (50K reputation)SSC Guru (50K reputation)SSC Guru (50K reputation)SSC Guru (50K reputation)SSC Guru (50K reputation)SSC Guru (50K reputation)SSC Guru (50K reputation)

Group: General Forum Members
Points: 50163 Visits: 10844
Sean Lange (9/2/2014)
Nadrek (9/2/2014)
[quote]

Which has a sample Perl RegEx for RFC822 validation, NOT including the arbitrarily nested comments allowed by the RFC.


That to me does not look like a viable piece of code I would put anywhere near my system.

+1000


Tally Tables - Performance Personified
String Splitting with True Performance
Best practices on how to ask questions
sqldriver
sqldriver
SSCrazy
SSCrazy (2.2K reputation)SSCrazy (2.2K reputation)SSCrazy (2.2K reputation)SSCrazy (2.2K reputation)SSCrazy (2.2K reputation)SSCrazy (2.2K reputation)SSCrazy (2.2K reputation)SSCrazy (2.2K reputation)

Group: General Forum Members
Points: 2234 Visits: 2536
Ed Wagner (9/2/2014)
sqldriver (8/28/2014)

The email addresses I was processing were not from a web form, they were provided to us either by clients, or by data marts. Nothing was deleted, it was just given a 'status flag' that meant the email inspection found something wonky. A certain percentage of the contact information was expected to be inaccurate or incorrect. So if the project was running a long time without a high response rate, and the PM didn't want to buy more sample, the remainder email addresses could be released.

I had to do a lot of similar stuff with phone number cleaning/checking and formatting so the dialer could make the calls correctly.

Market research is a bummer.

Hey, you know it's your fault that the invalid email addresses and phone numbers don't work. Because they're invalid, that shouldn't impact the response rate, should it? Your situation is certainly not unique. Guess who else works in market research? :-D


What do you mean you don't know if these Thai phone numbers are cell phones? We can't have cell phones on the predictive dialer! CASRO will exile us!
Ed Wagner
Ed Wagner
SSC Guru
SSC Guru (50K reputation)SSC Guru (50K reputation)SSC Guru (50K reputation)SSC Guru (50K reputation)SSC Guru (50K reputation)SSC Guru (50K reputation)SSC Guru (50K reputation)SSC Guru (50K reputation)

Group: General Forum Members
Points: 50163 Visits: 10844
sqldriver (9/2/2014)
Ed Wagner (9/2/2014)
sqldriver (8/28/2014)

The email addresses I was processing were not from a web form, they were provided to us either by clients, or by data marts. Nothing was deleted, it was just given a 'status flag' that meant the email inspection found something wonky. A certain percentage of the contact information was expected to be inaccurate or incorrect. So if the project was running a long time without a high response rate, and the PM didn't want to buy more sample, the remainder email addresses could be released.

I had to do a lot of similar stuff with phone number cleaning/checking and formatting so the dialer could make the calls correctly.

Market research is a bummer.

Hey, you know it's your fault that the invalid email addresses and phone numbers don't work. Because they're invalid, that shouldn't impact the response rate, should it? Your situation is certainly not unique. Guess who else works in market research? :-D


What do you mean you don't know if these Thai phone numbers are cell phones? We can't have cell phones on the predictive dialer! CASRO will exile us!

Yes they will, unless you have permission to use cell phone numbers. I think that predictive dialers are falling out of favor anyway industry-wide, given all the restrictions. There are many little quirks with market research data. And watch where (geographically) that data is stored if you any business with European respondents.

I'm in the process of writing a decent email validation, but I'm a ways away from having anything yet. I will not be using the regular expression solution, as we already have one in place and it's a nightmare. I see phase 1 in my head, so it's just a matter of getting the time to write it, get it working and making it fast. Ideally for phase 2, I'd like to "call up" the email server, ask if the account lives there and store the server's response. I don't see that part yet, but one thing at a time.


Tally Tables - Performance Personified
String Splitting with True Performance
Best practices on how to ask questions
Nadrek
Nadrek
SSCarpal Tunnel
SSCarpal Tunnel (4.6K reputation)SSCarpal Tunnel (4.6K reputation)SSCarpal Tunnel (4.6K reputation)SSCarpal Tunnel (4.6K reputation)SSCarpal Tunnel (4.6K reputation)SSCarpal Tunnel (4.6K reputation)SSCarpal Tunnel (4.6K reputation)SSCarpal Tunnel (4.6K reputation)

Group: General Forum Members
Points: 4614 Visits: 2741
Sean Lange (9/2/2014)
Nadrek (9/2/2014)
[quote]

Which has a sample Perl RegEx for RFC822 validation, NOT including the arbitrarily nested comments allowed by the RFC.


Heaven help you if you have to debug that thing. That to me does not look like a viable piece of code I would put anywhere near my system. That whole being able to support my code thing comes to mind. :-P


Judging by RFC822, no accurate 'validate email' code is going to be viable or supportable except by a domain expert w00t.
Tom Thomson
Tom Thomson
One Orange Chip
One Orange Chip (26K reputation)One Orange Chip (26K reputation)One Orange Chip (26K reputation)One Orange Chip (26K reputation)One Orange Chip (26K reputation)One Orange Chip (26K reputation)One Orange Chip (26K reputation)One Orange Chip (26K reputation)

Group: General Forum Members
Points: 26184 Visits: 12501
Nadrek (9/2/2014)
Judging by RFC822, no accurate 'validate email' code is going to be viable or supportable except by a domain expert w00t.


And if you go by RFC 822 you are going to have problems anyway, because it's out of date and no longer a valid description of the internet email address rules. The new RFC (RFC 2822) which superceded RFC 822 has itself been obsoleted by an even newer rfc (RFC 5322) and even RFC 5322 is partly obsoleted by RFC 6854 which replaces part of RFC 5322.

But being a domain expert is irrelevant anyway, because "valid" means "conforming to the internet rules for email addresses" rather than "being an actual email address" or "being an email address potentially allowed by the xyz.com receiving domain".

Tom

Go


Permissions

You can't post new topics.
You can't post topic replies.
You can't post new polls.
You can't post replies to polls.
You can't edit your own topics.
You can't delete your own topics.
You can't edit other topics.
You can't delete other topics.
You can't edit your own posts.
You can't edit other posts.
You can't delete your own posts.
You can't delete other posts.
You can't post events.
You can't edit your own events.
You can't edit other events.
You can't delete your own events.
You can't delete other events.
You can't send private messages.
You can't send emails.
You can read topics.
You can't vote in polls.
You can't upload attachments.
You can download attachments.
You can't post HTML code.
You can't edit HTML code.
You can't post IFCode.
You can't post JavaScript.
You can post emoticons.
You can't post or upload images.

Select a forum

































































































































































SQLServerCentral


Search