Thanks for cooperation(s) :)

On Thu, Apr 12, 2012 at 1:56 PM, Heinrich Breedt
<heinrichbre...@gmail.com>wrote:

> You call that "good" ? :P
>
>
> On Thu, Apr 12, 2012 at 5:06 PM, Les Hughes <l...@datarev.com.au> wrote:
>
>> Joseph Clark wrote:
>>
>>> I'm no expert on this either, but I'm fairly certain that this business
>>> requirement is simply not achievable. Due to the way mail servers operate
>>> on the Internet, there is no way for a sender to know if an intended
>>> recipient address is valid.
>>>
>>> An email may go through several mail exchanges before it arrives at the
>>> one that will ultimately deliver to the user's inbox. At any point along
>>> the way, the email may be rejected for any variety of reasons and this
>>> rejection may occur asynchronously.
>>>
>> Hi Muhammad,
>>
>> While I share a similar view about the requirements as the other posters,
>> that what you are trying to do will not be possible as a 100% working case.
>>
>> BUT
>>
>> Here are a few things you can do:
>>
>> - Let's say your domain is taxionline.com: set the 'return-to' header
>> variable to bou...@taxionline.com
>>
>> - Have some code which retrieves the bounce@ emails, looking for the
>> emails which have 550 errors + the rest of them. Note that some returns
>> will be "Out of Office" replies and so-forth. Here is some java code which
>> helps sort emails by category: http://javaclue.blogspot.com.**
>> au/2009/09/detect-bounced-**emails-part-2.html<http://javaclue.blogspot.com.au/2009/09/detect-bounced-emails-part-2.html>
>>
>> As others have noted, there are (at least) the following issues:
>> - Your email might be rejected as spam by a server somewhere between you
>> and the end mail server
>> - When the email is dropped, you might not get any confirmation.
>> - Any confirmation can take a long time to come back, making the whole
>> exercise pointless.
>> - Bounces might not be to standard, meaning you miss them.
>> - Classifying an innocent email as a bounce would be disastrous for any
>> legitimate user of your service.
>> - While I don't know your business case, it seems automating this might
>> be problematic in terms of how you deal with it, and something like an
>> SMS/Phone confirmation (while also having inherent issues) might be
>> something else to consider.
>>
>> Regardless, good luck :)
>> --
>> Les Hughes
>> l...@datarev.com.au
>>
>> P.S. For those interested, here is a good regular expression for email
>> validation:
>>
>> (?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[**\]
>> \000-\031]+(?:(?:(?:\r\n)?[ \t]
>> )+|\Z|(?=[\["()<>@,;:\\".\[\]]**))|"(?:[^\"\r\\]|\\.|(?:(?:\r\**n)?[
>> \t]))*"(?:(?:
>> \r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\]
>> \000-\031]+(?:(?:(
>> ?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[**\]]))|"(?:[^\"\r\\]|\\.|(?:(?:*
>> *\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[
>> \t])*(?:[^()<>@,;:\\".\[\] \000-\0
>> 31]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[**
>> \]]))|\[([^\[\]\r\\]|\\.)*\
>> ](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\]
>> \000-\031]+
>> (?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[**
>> \]]))|\[([^\[\]\r\\]|\\.)*\](?**:
>> (?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
>> \t])+|\Z
>> |(?=[\["()<>@,;:\\".\[\]]))|"(**?:[^\"\r\\]|\\.|(?:(?:\r\n)?[
>> \t]))*"(?:(?:\r\n)
>> ?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\]
>> \000-\031]+(?:(?:(?:\
>> r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[**\]]))|\[([^\[\]\r\\]|\\.)*\](?**
>> :(?:\r\n)?[
>> \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\]
>> \000-\031]+(?:(?:(?:\r\n)
>> ?[ 
>> \t])+|\Z|(?=[\["()<>@,;:\\".\[**\]]))|\[([^\[\]\r\\]|\\.)*\](?**:(?:\r\n)?[
>> \t]
>> )*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\]
>> \000-\031]+(?:(?:(?:\r\n)?[
>> \t])+|\Z|(?=[\["()<>@,;:\\".\[**\]]))|\[([^\[\]\r\\]|\\.)*\](?**:(?:\r\n)?[
>> \t])*
>> )(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\]
>> \000-\031]+(?:(?:(?:\r\n)?[ \t]
>> )+|\Z|(?=[\["()<>@,;:\\".\[\]]**))|\[([^\[\]\r\\]|\\.)*\](?:(?**:\r\n)?[
>> \t])*))*)
>> *:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
>> \t])+
>> |\Z|(?=[\["()<>@,;:\\".\[\]]))**|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)**?[
>> \t]))*"(?:(?:\r
>> \n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\]
>> \000-\031]+(?:(?:(?:
>> \r\n)?[ 
>> \t])+|\Z|(?=[\["()<>@,;:\\".\[**\]]))|"(?:[^\"\r\\]|\\.|(?:(?:**\r\n)?[
>> \t
>> ]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\]
>> \000-\031
>> ]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[**
>> \]]))|\[([^\[\]\r\\]|\\.)*\](
>> ?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\]
>> \000-\031]+(?
>> :(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[**
>> \]]))|\[([^\[\]\r\\]|\\.)*\](?**:(?
>> :\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\]
>> \000-\031]+(?:(?
>> :(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[**
>> \]]))|"(?:[^\"\r\\]|\\.|(?:(?:**\r\n)?
>> [ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[
>> \t])*(?:(?:(?:[^()<>@,;:\\".\[**\] \000-\031]+(?:(?:(?:\r\n)?[
>> \t])+|\Z|(?=[\["()<>@,;:\\".\[**\]]))|"(?:[^\"\r\\]|
>> \\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[
>> \t])*(?:[^()<>
>> @,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[**
>> \]]))|"
>> (?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[
>> \t])*))*@(?:(?:\r\n)?[ \t]
>> )*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
>> \t])+|\Z|(?=[\["()<>@,;:\\
>> ".\[\]]))|\[([^\[\]\r\\]|\\.)***\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[
>> \t])*(?
>> :[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
>> \t])+|\Z|(?=[\["()<>@,;:\\".\[
>> \]]))|\[([^\[\]\r\\]|\\.)*\](?**:(?:\r\n)?[
>> \t])*))*|(?:[^()<>@,;:\\".\[\] \000-
>> \031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[**
>> \]]))|"(?:[^\"\r\\]|\\.|(
>> ?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[
>> \t])*(?:@(?:[^()<>@,;
>> :\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[**
>> \]]))|\[([
>> ^\[\]\r\\]|\\.)*\](?:(?:\r\n)?**[ \t])*)(?:\.(?:(?:\r\n)?[
>> \t])*(?:[^()<>@,;:\\"
>> .\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[**
>> \]]))|\[([^\[\
>> ]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[
>> \t])*(?:[^()<>@,;:\\".\
>> [\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[**
>> \]]))|\[([^\[\]\
>> r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[
>> \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
>> \t])+|\Z|(?=[\["()<>@,;:\\".\[**\]]))|\[([^\[\]\r\\]
>> |\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[
>> \t])*)?(?:[^()<>@,;:\\".\[\] \0
>> 00-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[**
>> \]]))|"(?:[^\"\r\\]|\\
>> .|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[
>> \t])*(?:[^()<>@,
>> ;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[**
>> \]]))|"(?
>> :[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[
>> \t])*
>> (?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
>> \t])+|\Z|(?=[\["()<>@,;:\\".
>> \[\]]))|\[([^\[\]\r\\]|\\.)*\]**(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[
>> \t])*(?:[
>> ^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
>> \t])+|\Z|(?=[\["()<>@,;:\\".\[**\]
>> ]))|\[([^\[\]\r\\]|\\.)*\](?:(**?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[
>> \t])*)(?:,\s*(
>> ?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
>> \t])+|\Z|(?=[\["()<>@,;:\\
>> ".\[\]]))|"(?:[^\"\r\\]|\\.|(?**:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[
>> \t])*)(?:\.(?:(
>> ?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
>> \t])+|\Z|(?=[
>> \["()<>@,;:\\".\[\]]))|"(?:[^\**"\r\\]|\\.|(?:(?:\r\n)?[
>> \t]))*"(?:(?:\r\n)?[ \t
>> ])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\]
>> \000-\031]+(?:(?:(?:\r\n)?[ \t
>> ])+|\Z|(?=[\["()<>@,;:\\".\[\]**]))|\[([^\[\]\r\\]|\\.)*\](?:(**?:\r\n)?[
>> \t])*)(?
>> :\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
>> \t])+|
>> \Z|(?=[\["()<>@,;:\\".\[\]]))|**\[([^\[\]\r\\]|\\.)*\](?:(?:\**r\n)?[
>> \t])*))*|(?:
>> [^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
>> \t])+|\Z|(?=[\["()<>@,;:\\".\[**\
>> ]]))|"(?:[^\"\r\\]|\\.|(?:(?:\**r\n)?[ \t]))*"(?:(?:\r\n)?[
>> \t])*)*\<(?:(?:\r\n)
>> ?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
>> \t])+|\Z|(?=[\["
>> ()<>@,;:\\".\[\]]))|\[([^\[\]\**r\\]|\\.)*\](?:(?:\r\n)?[
>> \t])*)(?:\.(?:(?:\r\n)
>> ?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
>> \t])+|\Z|(?=[\["()<>
>> @,;:\\".\[\]]))|\[([^\[\]\r\\]**|\\.)*\](?:(?:\r\n)?[
>> \t])*))*(?:,@(?:(?:\r\n)?[
>> \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
>> \t])+|\Z|(?=[\["()<>@,
>> ;:\\".\[\]]))|\[([^\[\]\r\\]|\**\.)*\](?:(?:\r\n)?[
>> \t])*)(?:\.(?:(?:\r\n)?[ \t]
>> )*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
>> \t])+|\Z|(?=[\["()<>@,;:\\
>> ".\[\]]))|\[([^\[\]\r\\]|\\.)***\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[
>> \t])*)?
>> (?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
>> \t])+|\Z|(?=[\["()<>@,;:\\".
>> \[\]]))|"(?:[^\"\r\\]|\\.|(?:(**?:\r\n)?[ \t]))*"(?:(?:\r\n)?[
>> \t])*)(?:\.(?:(?:
>> \r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
>> \t])+|\Z|(?=[\[
>> "()<>@,;:\\".\[\]]))|"(?:[^\"\**r\\]|\\.|(?:(?:\r\n)?[
>> \t]))*"(?:(?:\r\n)?[ \t])
>> *))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
>> \t])
>> +|\Z|(?=[\["()<>@,;:\\".\[\]])**)|\[([^\[\]\r\\]|\\.)*\](?:(?:**\r\n)?[
>> \t])*)(?:\
>> .(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
>> \t])+|\Z
>> |(?=[\["()<>@,;:\\".\[\]]))|\[**([^\[\]\r\\]|\\.)*\](?:(?:\r\**n)?[
>> \t])*))*\>(?:(
>> ?:\r\n)?[ \t])*))*)?;\s*)
>>
>>
>> Source: 
>> http://www.ex-parrot.com/~pdw/**Mail-RFC822-Address.html<http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html>
>>
>> Also interesting, a comparison of different regular expressions for
>> email: 
>> http://www.pgregg.com/**projects/php/code/**showvalidemail.php<http://www.pgregg.com/projects/php/code/showvalidemail.php>
>>
>>
>
>
> --
> Heinrich Breedt
>
> “Do not wait to strike till the iron is hot; but make it hot by striking.”
> - William B. Sprague
>



-- 

Regards,
Muhammad Niaz

Reply via email to