Git Product home page Git Product logo

email-verify's People

Contributors

bighappyworld avatar bramzor avatar bryant1410 avatar derain avatar fones avatar gravitate-dev avatar sancowinx avatar vodolaz095 avatar zh99998 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

email-verify's Issues

Can't verify email from hotmail, yahoo, aol so on!

I have recently installed this package but i saw this package can't verify over a lots of domain but it's always returning true if the mail provider is gmail!

That's a big issue but no one ever created a issue with this problem.

Why verify base of domain?

Hi
I use emails that have valid domain and library working good
But some domain not exist but library return true
Or domain exists but email not exist and again result is true
Why?

Some strange issue when verifying email address like [email protected] or [email protected]

Hi bighappyworld,

Thank you for writing such a fantastic module, it's really good to help to valid email address.

However I find some strange issues when verifying email address like [email protected] or [email protected]. The script will keep loading until timeout.

I just try to verify address like [email protected], under this situation, the socket.on('data', function(data){...}) function will be called every time socket.write something. However when to verify address like [email protected] or [email protected], the socket.on('data', function(data){...}) function won't be called after socket.write("EHLO rob\n").

I was testing under local environment, I'm not sure if it's the problem.

It's so good if you can help to have a look.

Hope you have a happy 2015 ^^

Incorrect callback

On some emails if it throws an error, it returns the callback twice.

Also when it errors, the callback is in the wrong format. Should be error, info but is info, error.

Nemesis ESMTP Service not available

The email verify fails because of failing error

root@ubuntu:~/testing# email-verify [email protected]
INFO: # Veryfing [email protected]
INFO: Resolving DNS... alpha.gg
INFO: MX Records {"exchange":"mx00.1and1.co.uk","priority":20}
INFO: Choosing mx00.1and1.co.uk for connection
INFO: Creating connection...
INFO: Connected
SERVER: 554-kundenserver.de (mxeue010) Nemesis ESMTP Service not available
SERVER: 554-No SMTP service
SERVER: 554 invalid DNS PTR resource record, IP=198.179.57.23
SERVER:
INFO: Closing connection
{ success: false,
  info: '[email protected] is an invalid address',
  addr: '[email protected]' }

I checked with other validator, they are saying that the email address is valid.

Email Hunter

https://hunter.io/email-verifier/[email protected]

optimization for big amount

I'm using this script to verify about 300k email addresses. but only output 2354 records. I'm sure there is many more valid email addresses in list.

Issues on some domains

Hey,
Validation of all cisco.com email ids returns success always...
[email protected] returns success
What could be the reason ?
(Testing from AWS servers, I guess requests from local IPs get blocked)

SSL

Hello, some servers (mail.ru for example) always return false and error "550 SMTP is available only with SSL or TLS connection enabled."

Can you add SSL support?

No LICENSE file

Could you please add explicit license information?

Currently package.json lists ISC as a license, which is a default option for newly initialized packages, so intention is unclear.

Connection error while verifying mail adress

Hi, thanks for the package. I have an issue when I want to check an email adress with the package. I use the stand alone email-verify [email protected] version and the followng sample code:

const verifier = require('email-verify');

const infoCodes = verifier.infoCodes;

verifier.verify("[email protected]", (err, info) => {
    if(err) {
      console.log(err);
    }
    else{
      console.log( "Success (T/F): " + info.success);
      console.log( "Info: " + info.info );
  
      //Info object returns a code which representing a state of validation:
  
      //Connected to SMTP server and finished email verification
      console.log(info.code === infoCodes.finishedVerification);
  
      //Domain not found
      console.log(info.code === infoCodes.domainNotFound);
  
      //Email is not valid
      console.log(info.code === infoCodes.invalidEmailStructure);
  
      //No MX record in domain name
      console.log(info.code === infoCodes.noMxRecords);
  
      //SMTP connection timeout
      console.log(info.code === infoCodes.SMTPConnectionTimeout);
  
      //SMTP connection error
      console.log(info.code === infoCodes.SMTPConnectionError)
    }
  })

I tested this sample code on my laptop and the website repI.it (https://repl.it/languages/nodejs) but I always have this error:

OperationalError: connect ETIMEDOUT 104.47.1.36:25 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) { errno: 'ETIMEDOUT', code: 'ETIMEDOUT', syscall: 'connect', address: '104.47.2.36', port: 25 }

why I keep getting this error and there is a way to resolve it?

I use nodeJS 12.18.2 and email-verify 0.2.1 on Ubuntu 18.04 and my network connection is Fiber To The Last Amplifier.

Always timing out

{ Error: connect ETIMEDOUT 66.96.140.72:25
at Object.exports._errnoException (util.js:1007:11)
at exports._exceptionWithHostPort (util.js:1030:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1080:14)
code: 'ETIMEDOUT',
errno: 'ETIMEDOUT',
syscall: 'connect',
address: '66.96.140.72',
port: 25 }

any reason on why this might be happening?

different SMTP PORT for different domain.

How to handle different SMTP Port for different domain?
For example in domain aaa.com use port 25, but in domain bbb.com port 25 is blocked so they use port 465 instead (for example).
Domain ccc.com might use some other port.
So the list can be endless.

Some domains are always valid

Thanks for your awesome library, I have experienced that emails on some domains like adobe.com always returns valid no matter what. Do you have any idea how to work on that? At least, return back, with this domain, we cannot do verification. It would be great to have this functionality, you can try on http://www.mailtester.com/ with any emails on adobe.com. mailtester will return the following:

Mail servers found for domain:

  • adobe.mail.protection.outlook.com (priority 2, ip address: 207.46.163.215)
  • adobe-com.mail.protection.outlook.com (priority 1, ip address: 207.46.163.170)
    Using mail server with lowest priority number:
  • adobe-com.mail.protection.outlook.com (priority 1, ip address: 207.46.163.215)
    Mailserver identification:
    BL2FFO11FD023.mail.protection.outlook.com Microsoft ESMTP MAIL Service ready at Fri, 13 Nov 2015 01:10:56 +0000
    Server doesn't allow e-mail address verification

Verification system

I have had allt of problems getting my account verified so that part im not fond of.

Email verify does not work with services that block ports like 25 like Comcast

I'm at a loss trying to figure out how to use. I can't get Comcast or using a remote server like Heroku to make connections with email providers. I read somewhere that Amazon EC2 works for send email. The idea is that spammers are taking over personal computers and the major ISPs are preventing connections on port 25 to combat it.

same result returned, but one failed and one succeed

For the same email, I get the exact same info object and same verifyCodes, but one passes and one fails. How come? For example, the code is

verifier.verify(email, options, function(err, info) {
        if (err) {
            console.log("smtp valid err ", err);
        } else {
            console.log("Success isSmtpCatchAll (T/F): " + info.success);
            console.log("Info: " + info.info);

            //Info object returns a code which representing a state of validation:

            //Connected to SMTP server and finished email verification
            console.log(info.code === verifyCodes.finishedVerification);

            // //Domain not found
            console.log(info.code === verifyCodes.domainNotFound);

            // //Email is not valid
            console.log(info.code === verifyCodes.invalidEmailStructure);

            // //No MX record in domain name
            console.log(info.code === verifyCodes.noMxRecords);

            // //SMTP connection timeout
            console.log(info.code === verifyCodes.SMTPConnectionTimeout);

            // //SMTP connection error
            console.log(info.code === verifyCodes.SMTPConnectionError);
            
        }
    });

But on one machine, the result is

Success Smtp Valid (T/F): true
Info: [email protected] is a valid address
addr: [email protected]
code: 1
banner: 220 se6.mailspamprotection.com ESMTP Exim 134224 Fri, 15 Jun 2018 14:23:04 -0500

true
false
false
false
false
false

And on another, the result is

Success Smtp Valid (T/F): false
Info: [email protected] is a invalid address
addr: [email protected]
code: 1
banner: 220 se2.mailspamprotection.com ESMTP Exim 134224 Fri, 15 Jun 2018 14:22:35 -0500

true
false
false
false
false
false

Any ideas? It's almost the exact same result, even the banner, except one is valid and the other invalid.

Always times out

Any idea why my requests always time out?
[Error: queryMx ETIMEOUT] code: 'ETIMEOUT', errno: 'ETIMEOUT', syscall: 'queryMx'

email-verify returns failure returned when running multiple verifications

Hi,

Thanks for this module!
I just wanted to inform you that valid email addresses don't return info.success = true when I run several verifications in a short time period.
After googling, I saw this SO post:http://stackoverflow.com/questions/21181843/why-is-dns-resolvemx-always-returning-an-error-when-called-many-times

I was wondering if you see this issue and whether we can add a server rotation option for everyone's benefit.

  • Deepak

I keep getting a timeout for email address validation using nodejs

Here is my code:

test2: function (req, res) {
      var options = {
        port : 25, // integer, port to connect with defaults to 25
        sender : '[email protected]', // email, sender address, defaults to [email protected]
        timeout : 0, // integer, socket timeout defaults to 0 which is no timeout
        fdqn : 'gmail.com' //, used as part of the HELO, defaults to mail.example.org
      };
    var checkEmail = require('email-verify');
    checkEmail.verify('[email protected]', options, function(err, info) {
      console.log(info);
    });
    checkEmail.verify('[email protected]', options, function(err, info) {
      console.log(info);
    });
    res.json(true);
  }

This is what is returned:

{ [Error: connect ETIMEDOUT] code: 'ETIMEDOUT', errno: 'ETIMEDOUT', syscall: 'connect' }
{ [Error: connect ETIMEDOUT] code: 'ETIMEDOUT', errno: 'ETIMEDOUT', syscall: 'connect' }

not working in yahoo mails. It shows ECONNREFUSED

var verifier = require('email-verify');
verifier.verify( '[email protected]', function( err, info ){
  if( err ) console.log(err);
  else{
    console.log( "Success (T/F): " + info.success );
    console.log( "Info: " + info.info );
  }
});

Email address is valid but is shows invalid email address. I have tried to use port in options with 465 and 587 which didn't work.
In online tool it shows

true
"Success (T/F): false"
"Info: [email protected] is an invalid address"

Note: Email address is correct. I have tried other addresses too.

Running without concurrency flag gives error and no output even if do use it

I'm encountering two issues.

  1. When I don't use the -c concurrency flag, I get an error related to it being undefined.
timrpeterson$ email-verify [email protected]
Unhandled rejection TypeError: 'concurrency' must be a number but it is [object Undefined]
    at map (/usr/local/lib/node_modules/email-verify/node_modules/bluebird/js/release/map.js:140:21)
    at Function.Promise.map (/usr/local/lib/node_modules/email-verify/node_modules/bluebird/js/release/map.js:160:12)
    at Object.<anonymous> (/usr/local/lib/node_modules/email-verify/app.js:112:11)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3
  1. Unfortunately when I add in the flag, the script hangs and never produces output:
timrpeterson$ email-verify [email protected] -c 1

(never any output)

Thoughts?

Provide a new code when the client is blacklisted

Hi,
I was testing your library and unfortunately, our production AWS server got blacklisted by Microsoft ([email protected] it's mine)

ubuntu@ip-172-31-66-205:~$ email-verify [email protected]
INFO: DEBUG
INFO: OPTIONS: {"port":25,"sender":"[email protected]","fqdn":"mail.example.org","concurrency":1,"debug":true}
INFO: # Veryfing [email protected]
INFO: Resolving DNS... hotmail.it
INFO: MX Records {"exchange":"eur.olc.protection.outlook.com","priority":10}
INFO: Choosing eur.olc.protection.outlook.com for connection
INFO: Creating connection...
INFO: Connected
SERVER: 220 DB3EUR04FT014.mail.protection.outlook.com Microsoft ESMTP MAIL Service ready at Wed, 5 Aug 2020 14:03:14 +0000
SERVER: 
CLIENT: EHLO mail.example.org
CLIENT: 
SERVER: 250-DB3EUR04FT014.mail.protection.outlook.com Hello [35.181.159.81]
SERVER: 250-SIZE 49283072
SERVER: 250-PIPELINING
SERVER: 250-DSN
SERVER: 250-ENHANCEDSTATUSCODES
SERVER: 250-8BITMIME
SERVER: 250-BINARYMIME
SERVER: 250-CHUNKING
SERVER: 250 SMTPUTF8
SERVER: 
CLIENT: MAIL FROM:<[email protected]>
CLIENT: 
SERVER: 550 5.7.1 Unfortunately, messages from [<OUR_IP>] weren't sent. Please contact your Internet service provider since part of their network is on our block list (S3140). You can also refer your provider to http://mail.live.com/mail/troubleshooting.aspx#errors. [DB3EUR04FT014.eop-eur04.prod.protection.outlook.com]
SERVER: 
INFO: Closing connection
{
  success: false,
  info: '[email protected] is an invalid address',
  addr: '[email protected]',
  code: 1,
  tryagain: false,
  banner: '220 DB3EUR04FT014.mail.protection.outlook.com Microsoft ESMTP MAIL Service ready at Wed, 5 Aug 2020 14:03:14 +0000\r\n'
}

In this case, it's wrong saying that [email protected] is an invalid address since when I try it locally it's perfectly valid. Maybe it could really help to parse the server's message or just blindly reporting it, even if it's a bit long. I had to enable the debugging option by modifying the module inside node_modules (I wasn't able to find a param for the CLI to enable debugging) to spot this message.
Thanks.

Whats the trick in NOT getting blacklisted?

Hi guys,

I love the idea of the this package and am just trying it out. It works when testing it with my own mail-server (which does NOT have any spam protection), BUT it seems like on other domains I am getting a lot of false negatives due to blacklisting...

Is there a trick to make this work better? Maybe use a valid options.sender and options.fqdn?

Examples of "blacklisted" results I am getting:

// GMX
SERVER: 554-gmx.net (mxgmx016) Nemesis ESMTP Service not available
SERVER: 554-No SMTP service
SERVER: 554-IP address is black listed.
// RANDOM TARGET
SERVER: 451 4.3.0 Message temporarily deferred. Please try again later

Installing gives many "unmet dependency" npm warnings

I tried installing and got many warnings. Not sure if relevant but just wanted to comment here. I'm using Node v0.12.8.

Tims-MacBook-Pro-retina:~ timrpeterson$ sudo npm install -g email-verify
/usr/local/bin/email-verify -> /usr/local/lib/node_modules/email-verify/app.js
npm WARN unmet dependency /usr/local/lib/node_modules/npm/node_modules/npmconf requires semver@'2' but will load
npm WARN unmet dependency /usr/local/lib/node_modules/npm/node_modules/semver,
npm WARN unmet dependency which is version 5.0.3
npm WARN unmet dependency /usr/local/lib/node_modules/npm/node_modules/npmconf requires uid-number@'0.0.5' but will load
npm WARN unmet dependency /usr/local/lib/node_modules/npm/node_modules/uid-number,
npm WARN unmet dependency which is version 0.0.6
npm WARN unmet dependency /usr/local/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data requires github-url-from-username-repo@'^0.2.0' but will load
npm WARN unmet dependency /usr/local/lib/node_modules/npm/node_modules/github-url-from-username-repo,
npm WARN unmet dependency which is version 1.0.2
npm WARN unmet dependency /usr/local/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data requires semver@'2 || 3' but will load
npm WARN unmet dependency /usr/local/lib/node_modules/npm/node_modules/semver,
npm WARN unmet dependency which is version 5.0.3
npm WARN unmet dependency /usr/local/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/sshpk requires assert-plus@'>=0.2.0 <0.3.0' but will load
npm WARN unmet dependency /usr/local/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/assert-plus,
npm WARN unmet dependency which is version 0.1.5

How to solve queryMx ECONNREFUSED

OperationalError: queryMx ECONNREFUSED gmail.com
at QueryReqWrap.onresolve [as oncomplete] (dns.js:203:19) {
cause: Error: queryMx ECONNREFUSED gmail.com
at QueryReqWrap.onresolve [as oncomplete] (dns.js:203:19) {
errno: 'ECONNREFUSED',
code: 'ECONNREFUSED',
syscall: 'queryMx',
hostname: 'gmail.com'
},
isOperational: true,
errno: 'ECONNREFUSED',
code: 'ECONNREFUSED',
syscall: 'queryMx',
hostname: 'gmail.com'
}

yahoo false negative

I tried to verify my yahoo account. It comes back as success: false. It is my yahoo address so I know it's valid and gets email daily.

Thoughts?

dns.resolveMx is not a function

Hi. I'm trying to validate a test email which actually exists, but dns.resolveMx appears in the console as an error. How can I fix this one? I'm using Meteor

Add an ability to set custom SMTP port

While for production usage port 25 is always the best idea, it may bring troubles during the local development. A lot of ISPs are blocking outgoing connections to port 25.

Having an ability to change port to 587 (which is supported by a lot of mail servers) may allow a lot of developers to test how this component works locally.

Differentiate failure to verify email address and definitive case that it is invalid

Currently success: true is a definitive answer that SMTP server acknowledges that it would receive email to a given address.

success: false could mean both rejection of a RCPT TO command and misconfiguration on client side, e.g. 554-Bad DNS PTR resource record. So success: false could give false negatives due to client misconfiguration.

It would be convenient to differentiate mailbox existence and middle step success flags. For example { exists: true|false|undefined, failed: 'CONNECT|EHLO|MAIL FROM|RCPT TO' } with exists set to boolean only when response is definitive.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.