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
local clone.
Page wiki
View or edit the community-maintained wiki page associated with this page.
std.net.isemail
Validates an email address according to RFCs 5321, 5322 and others. Authors:Dominic Sayers
Boost Software License 1.0 Version:
3.0.13 - Version 3.0 of the original PHP implementation: http://www.dominicsayers.com/isemail Standards:
- RFC 5321
- RFC 5322
- http://www.dominicsayers.com/isemail
- http://tools.ietf.org/html/rfc5321
- http://tools.ietf.org/html/rfc5322
std/net/isemail.d
- EmailStatus isEmail(Char)(const(Char)[] email, CheckDns checkDNS = CheckDns.no, EmailStatusCode errorLevel = EmailStatusCode.none) if (isSomeChar!Char);
- Check that an email address 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 valid email address. 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:
an EmailStatus, indicating the status of the email address. - enum CheckDns: int;
- Enum for indicating if the isEmail function should perform a DNS check or not.
- struct EmailStatus;
- This struct represents the status of an email address
- @property bool valid();
- Indicates if the email address is valid or not.
- @property string localPart();
- The local part of the email address, that is, the part before the @ sign.
- @property string domainPart();
- The domain part of the email address, that is, the part after the @ sign.
- @property EmailStatusCode statusCode();
- The email status code
- @property string status();
- Returns a describing string of the status code
- string toString();
- Returns a textual representation of the email status
- string statusCodeDescription(EmailStatusCode statusCode);
- 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