Report a bug
		
				If you spot a problem with this page, click here to create a Bugzilla issue.
		
			Improve this page
		
			Quickly fork, edit online, and submit a pull request for this page.
			Requires a signed-in GitHub account. This works well for small changes.
			If you'd like to make larger changes you may want to consider using
			a local clone.
		
	std.net.isemail
Validates an email address according to RFCs 5321, 5322 and others.
Authors: 
Dominic Sayers <[email protected]>, Jacob Carlborg
License: 
Version: 
3.0.13 - Version 3.0 of the original PHP implementation: http://www.dominicsayers.com/isemail
Standards: 
- RFC 5321
 - RFC 5322
 
References:
Source: std/net/isemail.d
- EmailStatus
isEmail(Char)(const(Char)[]email, CheckDnscheckDNS= No.checkDns, EmailStatusCodeerrorLevel= EmailStatusCode.none)
if (isSomeChar!Char); - Check that an
emailaddress conforms to RFCs 5321, 5322 and others.As of Version 3.0, we are now distinguishing clearly between a Mailbox as defined by RFC 5321 and an addr-spec as defined by RFC 5322. Depending on the context, either can be regarded as a validemailaddress. The RFC 5321 Mailbox specification is more restrictive (comments, white space and obsolete forms are not allowed).Note: The DNS check is currently not implemented.
Parameters:const(Char)[] emailThe emailaddress to checkCheckDns checkDNSIf Yes.checkDns then a DNS check for MX records will be made EmailStatusCode errorLevelDetermines the boundary between valid and invalid addresses. Status codes above this number will be returned as-is, status codes below will be returned as EmailStatusCode.valid. Thus the calling program can simply look for EmailStatusCode.valid if it is only interested in whether an address is valid or not. The errorLevelwill determine how "picky"isEmail() is about the address. If omitted or passed as EmailStatusCode.none thenisEmail() will not perform any finer grained error checking and an address is either considered valid or not. Email status code will either be EmailStatusCode.valid or EmailStatusCode.error.Returns:an EmailStatus, indicating the status of theemailaddress. - alias
CheckDns= std.typecons.Flag!"checkDns".Flag; - Flag for indicating if the isEmail function should perform a DNS check or not.If set to
CheckDns.no, isEmail does not perform DNS checking. Otherwise if set toCheckDns.yes, isEmail performs DNS checking. - struct
EmailStatus; - This struct represents the status of an email address
- const @property bool
valid(); - Indicates if the email address is
validor not. - const @property string
localPart(); - The local part of the email address, that is, the part before the @ sign.
 - const @property string
domainPart(); - The domain part of the email address, that is, the part after the @ sign.
 - const @property EmailStatusCode
statusCode(); - The email status code
 - const @property string
status(); - Returns a describing string of the
statuscode - const string
toString(); - Returns a textual representation of the email status
 
 - string
statusCodeDescription(EmailStatusCodestatusCode); - Returns a describing string of the given status code
 - enum
EmailStatusCode: int; - An email status code, indicating if an email address is valid or not. If it is invalid it also indicates why.
validCategory- Address is valid
 dnsWarning- Address is valid but a DNS check was not successful
 rfc5321- Address is valid for SMTP but has unusual elements
 cFoldingWhitespace- Address is valid within the message but cannot be used unmodified for the envelope
 deprecated_- Address contains deprecated elements but may still be valid in restricted contexts
 rfc5322- The address is only valid according to the broad definition of RFC 5322. It is otherwise invalid
 any- All finer grained error checking is turned on. Address containing errors or warnings is considered invalid. A specific email status code will be returned indicating the error/warning of the address.
 none- Address is either considered valid or not, no finer grained error checking is performed. Returned email status code will be either Error or Valid.
 warning- Address containing warnings is considered valid, that is, any status code below 16 is considered valid.
 error- Address is invalid for any purpose
 valid- Address is
valid dnsWarningNoMXRecord- Could not find an MX record for this domain but an A-record does exist
 dnsWarningNoRecord- Could not find an MX record or an A-record for this domain
 rfc5321TopLevelDomain- Address is valid but at a Top Level Domain
 rfc5321TopLevelDomainNumeric- Address is valid but the Top Level Domain begins with a number
 rfc5321QuotedString- Address is valid but contains a quoted string
 rfc5321AddressLiteral- Address is valid but at a literal address not a domain
 rfc5321IpV6Deprecated- Address is valid but contains a :: that only elides one zero group
 comment- Address contains comments
 foldingWhitespace- Address contains Folding White Space
 deprecatedLocalPart- The local part is in a deprecated form
 deprecatedFoldingWhitespace- Address contains an obsolete form of Folding White Space
 deprecatedQuotedText- A quoted string contains a deprecated character
 deprecatedQuotedPair- A quoted pair contains a deprecated character
 deprecatedComment- Address contains a comment in a position that is deprecated
 deprecatedCommentText- A comment contains a deprecated character
 deprecatedCommentFoldingWhitespaceNearAt- Address contains a comment or Folding White Space around the @ sign
 rfc5322Domain- Address is RFC 5322 compliant but contains domain characters that are not allowed by DNS
 rfc5322TooLong- Address is too long
 rfc5322LocalTooLong- The local part of the address is too long
 rfc5322DomainTooLong- The domain part is too long
 rfc5322LabelTooLong- The domain part contains an element that is too long
 rfc5322DomainLiteral- The domain literal is not a valid RFC 5321 address literal
 rfc5322DomainLiteralObsoleteText- The domain literal is not a valid RFC 5321 address literal and it contains obsolete characters
 rfc5322IpV6GroupCount- The IPv6 literal address contains the wrong number of groups
 rfc5322IpV6TooManyDoubleColons- The IPv6 literal address contains too many :: sequences
 rfc5322IpV6BadChar- The IPv6 address contains an illegal group of characters
 rfc5322IpV6MaxGroups- The IPv6 address has too many groups
 rfc5322IpV6ColonStart- IPv6 address starts with a single colon
 rfc5322IpV6ColonEnd- IPv6 address ends with a single colon
 errorExpectingDomainText- A domain literal contains a character that is not allowed
 errorNoLocalPart- Address has no local part
 errorNoDomain- Address has no domain part
 errorConsecutiveDots- The address may not contain consecutive dots
 errorTextAfterCommentFoldingWhitespace- Address contains text after a comment or Folding White Space
 errorTextAfterQuotedString- Address contains text after a quoted string
 errorTextAfterDomainLiteral- Extra characters were found after the end of the domain literal
 errorExpectingQuotedPair- The address contains a character that is not allowed in a quoted pair
 errorExpectingText- Address contains a character that is not allowed
 errorExpectingQuotedText- A quoted string contains a character that is not allowed
 errorExpectingCommentText- A comment contains a character that is not allowed
 errorBackslashEnd- The address cannot end with a backslash
 errorDotStart- Neither part of the address may begin with a dot
 errorDotEnd- Neither part of the address may end with a dot
 errorDomainHyphenStart- A domain or subdomain cannot begin with a hyphen
 errorDomainHyphenEnd- A domain or subdomain cannot end with a hyphen
 errorUnclosedQuotedString- Unclosed quoted string
 errorUnclosedComment- Unclosed comment
 errorUnclosedDomainLiteral- Domain literal is missing its closing bracket
 errorFoldingWhitespaceCrflX2- Folding White Space contains consecutive CRLF sequences
 errorFoldingWhitespaceCrLfEnd- Folding White Space ends with a CRLF sequence
 errorCrNoLf- Address contains a carriage return that is not followed by a line feed
 
 
Dominic Sayers, Jacob Carlborg 2008-.
 Test schema documentation: Copyright © 2011, Daniel Marschall
 | Page generated by
Ddoc on (no date time)