Documentation du code de SPIP et de ses plugins

API de vérification

is_email.php

To validate an email address according to RFCs 5321, 5322 and others

Copyright © 2008-2011, Dominic Sayers Test schema documentation Copyright © 2011, Daniel Marschall All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

- Redistributions of source code must retain the above copyright notice,
  this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice,
  this list of conditions and the following disclaimer in the documentation
  and/or other materials provided with the distribution.
- Neither the name of Dominic Sayers nor the names of its contributors may be
  used to endorse or promote products derived from this software without
  specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Tags
author

Dominic Sayers dominic@sayers.cc

copyright

2008-2011 Dominic Sayers

license

http://www.opensource.org/licenses/bsd-license.php BSD License

link
http://www.dominicsayers.com/isemail
version
3.04.1
  • Changed my link to http://isemail.info throughout

Table of Contents

Constants

ISEMAIL_CFWS  = 31
ISEMAIL_CFWS_COMMENT  = 17
ISEMAIL_CFWS_FWS  = 18
ISEMAIL_COMPONENT_DOMAIN  = 1
ISEMAIL_COMPONENT_LITERAL  = 2
ISEMAIL_COMPONENT_LOCALPART  = 0
ISEMAIL_CONTEXT_COMMENT  = 3
ISEMAIL_CONTEXT_FWS  = 4
ISEMAIL_CONTEXT_QUOTEDPAIR  = 6
ISEMAIL_CONTEXT_QUOTEDSTRING  = 5
ISEMAIL_DEPREC  = 63
ISEMAIL_DEPREC_CFWS_NEAR_AT  = 49
ISEMAIL_DEPREC_COMMENT  = 37
ISEMAIL_DEPREC_CTEXT  = 38
ISEMAIL_DEPREC_FWS  = 34
ISEMAIL_DEPREC_LOCALPART  = 33
ISEMAIL_DEPREC_QP  = 36
ISEMAIL_DEPREC_QTEXT  = 35
ISEMAIL_DNSWARN  = 7
ISEMAIL_DNSWARN_NO_MX_RECORD  = 5
ISEMAIL_DNSWARN_NO_RECORD  = 6
ISEMAIL_ERR  = 255
ISEMAIL_ERR_ATEXT_AFTER_CFWS  = 133
ISEMAIL_ERR_ATEXT_AFTER_DOMLIT  = 135
ISEMAIL_ERR_ATEXT_AFTER_QS  = 134
ISEMAIL_ERR_BACKSLASHEND  = 140
ISEMAIL_ERR_CONSECUTIVEDOTS  = 132
ISEMAIL_ERR_CR_NO_LF  = 150
ISEMAIL_ERR_DOMAINHYPHENEND  = 144
ISEMAIL_ERR_DOMAINHYPHENSTART  = 143
ISEMAIL_ERR_DOT_END  = 142
ISEMAIL_ERR_DOT_START  = 141
ISEMAIL_ERR_EXPECTING_ATEXT  = 137
ISEMAIL_ERR_EXPECTING_CTEXT  = 139
ISEMAIL_ERR_EXPECTING_DTEXT  = 129
ISEMAIL_ERR_EXPECTING_QPAIR  = 136
ISEMAIL_ERR_EXPECTING_QTEXT  = 138
ISEMAIL_ERR_FWS_CRLF_END  = 149
ISEMAIL_ERR_FWS_CRLF_X2  = 148
ISEMAIL_ERR_NODOMAIN  = 131
ISEMAIL_ERR_NOLOCALPART  = 130
ISEMAIL_ERR_UNCLOSEDCOMMENT  = 146
ISEMAIL_ERR_UNCLOSEDDOMLIT  = 147
ISEMAIL_ERR_UNCLOSEDQUOTEDSTR  = 145
ISEMAIL_RFC5321  = 15
ISEMAIL_RFC5321_ADDRESSLITERAL  = 12
ISEMAIL_RFC5321_IPV6DEPRECATED  = 13
ISEMAIL_RFC5321_QUOTEDSTRING  = 11
ISEMAIL_RFC5321_TLD  = 9
ISEMAIL_RFC5321_TLDNUMERIC  = 10
ISEMAIL_RFC5322  = 127
ISEMAIL_RFC5322_DOMAIN  = 65
ISEMAIL_RFC5322_DOMAIN_TOOLONG  = 68
ISEMAIL_RFC5322_DOMAINLITERAL  = 70
ISEMAIL_RFC5322_DOMLIT_OBSDTEXT  = 71
ISEMAIL_RFC5322_IPV6_2X2XCOLON  = 73
ISEMAIL_RFC5322_IPV6_BADCHAR  = 74
ISEMAIL_RFC5322_IPV6_COLONEND  = 77
ISEMAIL_RFC5322_IPV6_COLONSTRT  = 76
ISEMAIL_RFC5322_IPV6_GRPCOUNT  = 72
ISEMAIL_RFC5322_IPV6_MAXGRPS  = 75
ISEMAIL_RFC5322_LABEL_TOOLONG  = 69
ISEMAIL_RFC5322_LOCAL_TOOLONG  = 67
ISEMAIL_RFC5322_TOOLONG  = 66
ISEMAIL_STRING_AT  = '@'
ISEMAIL_STRING_BACKSLASH  = '\\'
ISEMAIL_STRING_CLOSEPARENTHESIS  = ')'
ISEMAIL_STRING_CLOSESQBRACKET  = ']'
ISEMAIL_STRING_COLON  = ':'
ISEMAIL_STRING_CR  = "\r"
ISEMAIL_STRING_DOT  = '.'
ISEMAIL_STRING_DOUBLECOLON  = '::'
ISEMAIL_STRING_DQUOTE  = '"'
ISEMAIL_STRING_HTAB  = "\t"
ISEMAIL_STRING_HYPHEN  = '-'
ISEMAIL_STRING_IPV6TAG  = 'IPv6:'
ISEMAIL_STRING_LF  = "\n"
ISEMAIL_STRING_OPENPARENTHESIS  = '('
ISEMAIL_STRING_OPENSQBRACKET  = '['
ISEMAIL_STRING_SP  = ' '
ISEMAIL_STRING_SPECIALS  = '()<>[]:;@\\,."'
ISEMAIL_THRESHOLD  = 16
ISEMAIL_VALID  = 0
ISEMAIL_VALID_CATEGORY  = 1

Functions

is_email()  : bool|int
Check that an email address conforms to RFCs 5321, 5322 and others

Constants

ISEMAIL_COMPONENT_DOMAIN

public mixed ISEMAIL_COMPONENT_DOMAIN = 1

ISEMAIL_COMPONENT_LITERAL

public mixed ISEMAIL_COMPONENT_LITERAL = 2

ISEMAIL_COMPONENT_LOCALPART

public mixed ISEMAIL_COMPONENT_LOCALPART = 0

ISEMAIL_CONTEXT_COMMENT

public mixed ISEMAIL_CONTEXT_COMMENT = 3

ISEMAIL_CONTEXT_QUOTEDPAIR

public mixed ISEMAIL_CONTEXT_QUOTEDPAIR = 6

ISEMAIL_CONTEXT_QUOTEDSTRING

public mixed ISEMAIL_CONTEXT_QUOTEDSTRING = 5

ISEMAIL_DEPREC_CFWS_NEAR_AT

public mixed ISEMAIL_DEPREC_CFWS_NEAR_AT = 49

ISEMAIL_DEPREC_COMMENT

public mixed ISEMAIL_DEPREC_COMMENT = 37

ISEMAIL_DEPREC_LOCALPART

public mixed ISEMAIL_DEPREC_LOCALPART = 33

ISEMAIL_DNSWARN_NO_MX_RECORD

public mixed ISEMAIL_DNSWARN_NO_MX_RECORD = 5

ISEMAIL_DNSWARN_NO_RECORD

public mixed ISEMAIL_DNSWARN_NO_RECORD = 6

ISEMAIL_ERR_ATEXT_AFTER_CFWS

public mixed ISEMAIL_ERR_ATEXT_AFTER_CFWS = 133

ISEMAIL_ERR_ATEXT_AFTER_DOMLIT

public mixed ISEMAIL_ERR_ATEXT_AFTER_DOMLIT = 135

ISEMAIL_ERR_ATEXT_AFTER_QS

public mixed ISEMAIL_ERR_ATEXT_AFTER_QS = 134

ISEMAIL_ERR_BACKSLASHEND

public mixed ISEMAIL_ERR_BACKSLASHEND = 140

ISEMAIL_ERR_CONSECUTIVEDOTS

public mixed ISEMAIL_ERR_CONSECUTIVEDOTS = 132

ISEMAIL_ERR_DOMAINHYPHENEND

public mixed ISEMAIL_ERR_DOMAINHYPHENEND = 144

ISEMAIL_ERR_DOMAINHYPHENSTART

public mixed ISEMAIL_ERR_DOMAINHYPHENSTART = 143

ISEMAIL_ERR_DOT_START

public mixed ISEMAIL_ERR_DOT_START = 141

ISEMAIL_ERR_EXPECTING_ATEXT

public mixed ISEMAIL_ERR_EXPECTING_ATEXT = 137

ISEMAIL_ERR_EXPECTING_CTEXT

public mixed ISEMAIL_ERR_EXPECTING_CTEXT = 139

ISEMAIL_ERR_EXPECTING_DTEXT

public mixed ISEMAIL_ERR_EXPECTING_DTEXT = 129

ISEMAIL_ERR_EXPECTING_QPAIR

public mixed ISEMAIL_ERR_EXPECTING_QPAIR = 136

ISEMAIL_ERR_EXPECTING_QTEXT

public mixed ISEMAIL_ERR_EXPECTING_QTEXT = 138

ISEMAIL_ERR_FWS_CRLF_END

public mixed ISEMAIL_ERR_FWS_CRLF_END = 149

ISEMAIL_ERR_FWS_CRLF_X2

public mixed ISEMAIL_ERR_FWS_CRLF_X2 = 148

ISEMAIL_ERR_NOLOCALPART

public mixed ISEMAIL_ERR_NOLOCALPART = 130

ISEMAIL_ERR_UNCLOSEDCOMMENT

public mixed ISEMAIL_ERR_UNCLOSEDCOMMENT = 146

ISEMAIL_ERR_UNCLOSEDDOMLIT

public mixed ISEMAIL_ERR_UNCLOSEDDOMLIT = 147

ISEMAIL_ERR_UNCLOSEDQUOTEDSTR

public mixed ISEMAIL_ERR_UNCLOSEDQUOTEDSTR = 145

ISEMAIL_RFC5321_ADDRESSLITERAL

public mixed ISEMAIL_RFC5321_ADDRESSLITERAL = 12

ISEMAIL_RFC5321_IPV6DEPRECATED

public mixed ISEMAIL_RFC5321_IPV6DEPRECATED = 13

ISEMAIL_RFC5321_QUOTEDSTRING

public mixed ISEMAIL_RFC5321_QUOTEDSTRING = 11

ISEMAIL_RFC5321_TLDNUMERIC

public mixed ISEMAIL_RFC5321_TLDNUMERIC = 10

ISEMAIL_RFC5322_DOMAIN

public mixed ISEMAIL_RFC5322_DOMAIN = 65

ISEMAIL_RFC5322_DOMAIN_TOOLONG

public mixed ISEMAIL_RFC5322_DOMAIN_TOOLONG = 68

ISEMAIL_RFC5322_DOMAINLITERAL

public mixed ISEMAIL_RFC5322_DOMAINLITERAL = 70

ISEMAIL_RFC5322_DOMLIT_OBSDTEXT

public mixed ISEMAIL_RFC5322_DOMLIT_OBSDTEXT = 71

ISEMAIL_RFC5322_IPV6_2X2XCOLON

public mixed ISEMAIL_RFC5322_IPV6_2X2XCOLON = 73

ISEMAIL_RFC5322_IPV6_BADCHAR

public mixed ISEMAIL_RFC5322_IPV6_BADCHAR = 74

ISEMAIL_RFC5322_IPV6_COLONEND

public mixed ISEMAIL_RFC5322_IPV6_COLONEND = 77

ISEMAIL_RFC5322_IPV6_COLONSTRT

public mixed ISEMAIL_RFC5322_IPV6_COLONSTRT = 76

ISEMAIL_RFC5322_IPV6_GRPCOUNT

public mixed ISEMAIL_RFC5322_IPV6_GRPCOUNT = 72

ISEMAIL_RFC5322_IPV6_MAXGRPS

public mixed ISEMAIL_RFC5322_IPV6_MAXGRPS = 75

ISEMAIL_RFC5322_LABEL_TOOLONG

public mixed ISEMAIL_RFC5322_LABEL_TOOLONG = 69

ISEMAIL_RFC5322_LOCAL_TOOLONG

public mixed ISEMAIL_RFC5322_LOCAL_TOOLONG = 67

ISEMAIL_RFC5322_TOOLONG

public mixed ISEMAIL_RFC5322_TOOLONG = 66

ISEMAIL_STRING_BACKSLASH

public mixed ISEMAIL_STRING_BACKSLASH = '\\'

ISEMAIL_STRING_CLOSEPARENTHESIS

public mixed ISEMAIL_STRING_CLOSEPARENTHESIS = ')'

ISEMAIL_STRING_CLOSESQBRACKET

public mixed ISEMAIL_STRING_CLOSESQBRACKET = ']'

ISEMAIL_STRING_DOUBLECOLON

public mixed ISEMAIL_STRING_DOUBLECOLON = '::'

ISEMAIL_STRING_DQUOTE

public mixed ISEMAIL_STRING_DQUOTE = '"'

ISEMAIL_STRING_HYPHEN

public mixed ISEMAIL_STRING_HYPHEN = '-'

ISEMAIL_STRING_IPV6TAG

public mixed ISEMAIL_STRING_IPV6TAG = 'IPv6:'

ISEMAIL_STRING_OPENPARENTHESIS

public mixed ISEMAIL_STRING_OPENPARENTHESIS = '('

ISEMAIL_STRING_OPENSQBRACKET

public mixed ISEMAIL_STRING_OPENSQBRACKET = '['

ISEMAIL_STRING_SPECIALS

public mixed ISEMAIL_STRING_SPECIALS = '()<>[]:;@\\,."'

Functions

is_email()

Check that an email address conforms to RFCs 5321, 5322 and others

is_email(string $email[, bool $checkDNS = false ][, mixed $errorlevel = false ][, array<string|int, mixed> &$parsedata = [] ]) : bool|int

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)

Parameters
$email : string

The email address to check

$checkDNS : bool = false

If true then a DNS check for MX records will be made

$errorlevel : mixed = false

Determines the boundary between valid and invalid addresses. Status codes above this number will be returned as-is, status codes below will be returned as ISEMAIL_VALID. Thus the calling program can simply look for ISEMAIL_VALID if it is only interested in whether an address is valid or not. The errorlevel will determine how "picky" is_email() is about the address.

If omitted or passed as false then is_email() will return true or false rather than an integer error or warning.

NB Note the difference between $errorlevel = false and $errorlevel = 0

$parsedata : array<string|int, mixed> = []

If passed, returns the parsed address components

Return values
bool|int

        
On this page

Search results