diff --git a/src/verimail.js b/src/verimail.js index 0d93707..931f2ee 100644 --- a/src/verimail.js +++ b/src/verimail.js @@ -357,27 +357,33 @@ Verimail.prototype.verify = function(email, onStatusUpdate){ status = Verimail.Status.BlockedError; message = this.getLanguageText("domainBlocked", segments.fullDomain); }else{ - if(this.options.enforceTld){ - if(!segments.tld){ + if(segments.domain && (segments.domain[0] === "-" || segments.domain[segments.domain.length-1] === "-")) + { status = Verimail.Status.InvalidPart; message = this.getLanguageText("invalidFormat"); - }else if(!(segments.tld in Verimail.IANARegisteredTlds)){ - status = Verimail.Status.InvalidPart; - var closestTld = Verimail.getClosestTld(segments.tld, 10, this.options.distanceFunction); - if(closestTld){ - var closestDomain = Verimail.getClosestEmailDomain(segments.domain + "." + closestTld, 0.25, this.options.distanceFunction); - if(closestDomain){ - suggestion = segments.local + "@" + closestDomain; - message = this.getLanguageText("typo", segments.local + "@" + markAsCorrection(closestDomain)); - }else{ - suggestion = segments.local + "@" + segments.domain + "." + closestTld; - message = this.getLanguageText("typo", segments.local + "@" + segments.domain + "." + markAsCorrection(closestTld)); + } else { + if(this.options.enforceTld){ + if(!segments.tld){ + status = Verimail.Status.InvalidPart; + message = this.getLanguageText("invalidFormat"); + }else if(!(segments.tld in Verimail.IANARegisteredTlds)){ + status = Verimail.Status.InvalidPart; + var closestTld = Verimail.getClosestTld(segments.tld, 10, this.options.distanceFunction); + if(closestTld){ + var closestDomain = Verimail.getClosestEmailDomain(segments.domain + "." + closestTld, 0.25, this.options.distanceFunction); + if(closestDomain){ + suggestion = segments.local + "@" + closestDomain; + message = this.getLanguageText("typo", segments.local + "@" + markAsCorrection(closestDomain)); + }else{ + suggestion = segments.local + "@" + segments.domain + "." + closestTld; + message = this.getLanguageText("typo", segments.local + "@" + segments.domain + "." + markAsCorrection(closestTld)); + } + }else{ + message = this.getLanguageText("invalidTld", segments.tld); + } } - }else{ - message = this.getLanguageText("invalidTld", segments.tld); } } - } } } @@ -393,6 +399,14 @@ Verimail.prototype.verify = function(email, onStatusUpdate){ } } + + if(!onStatusUpdate) + { + return { + status: status, + message: message + }; + } else //if(this.options.token && status == Verimail.Status.CorrectSyntax){ // onStatusUpdate(Verimail.Status.Pending, message, suggestion); // this.Service.verify(email, onStatusUpdate);