英語版
このページの英語版を見る

std.net.isemail

RFC5321、5322、およびその他に従ってメールアドレスを検証する。
Authors:
Dominic Sayers <dominic@sayers.cc>, Jacob Carlborg
License:
Boost Software License 1.0 Dominic Sayers graciously granted permission to use the Boost license via email on Feb 22, 2011.
Version:
3.0.13 - オリジナルの PHP 実装のバージョン 3.0:https://www.dominicsayers.com/isemail
Standards:
  • RFC 5321
  • RFC 5322
EmailStatus isEmail(Char)(const(Char)[] email, CheckDns checkDNS = No.checkDns, EmailStatusCode errorLevel = EmailStatusCode.none)
if (isSomeChar!Char);
メールアドレスがRFC 5321、5322などに準拠しているかどうかをチェックする。
RFC 5321で定義されているMailboxとRFC 5322で定義されているaddr-specを区別する。 を区別する。文脈によっては、どちらを有効なメールアドレスと見なすこともできる。 有効なメールアドレスとみなすことができる。

注釈: DNSチェックは現在実装されていない。 DNSチェックは現在実装されていない。

Parameters:
const(Char)[] email チェックするメールアドレス
CheckDns checkDNS Yes.checkDns の場合、MXレコードのDNSチェックが行われる。
EmailStatusCode errorLevel 有効なアドレスと無効なアドレスの境界を決定する。 この数値以上のステータスコードはそのまま返される、 それ以下のステータスコードは、EmailStatusCode.validとして返される。 従って、呼び出し側のプログラムは、単純にEmailStatusCode.validを探すことができる。 を探すことができる。この isEmail()がどの程度アドレスに "うるさい"かは、errorLevelによって決まる。 がどの程度 "うるさい"かを決定する。
省略された場合、あるいは EmailStatusCode.none として渡された場合、isEmail() はより細かいエラー・チェックを行わず、アドレスは次のようになる。 は細かいエラーチェックを行わず、アドレスは有効か無効かのどちらかとなる。 は有効か無効かを判断する。電子メールのステータス・コードは EmailStatusCode.valid または EmailStatusCode.error のいずれかとなる。
Returns:
を返す。 EmailStatusメールアドレスのステータスを示す
alias CheckDns = std.typecons.Flag!"checkDns".Flag;
isEmail関数がDNSチェックを行うかどうかを示すフラグ。
に設定されている場合 CheckDns.noに設定されている場合、isEmailはDNSチェックを行わない。
そうでなければ CheckDns.yesに設定されている場合、isEmailはDNSチェックを行う。
struct EmailStatus;
メールアドレスのステータスを表す
const pure nothrow @nogc @property scope @safe bool valid();
Returns:
メールアドレスが有効かどうかを表す。
const pure nothrow @nogc @property scope @safe string localPart() return;
Returns:
メールアドレスのローカル部分、つまり@記号の前の部分。
const pure nothrow @nogc @property scope @safe string domainPart() return;
Returns:
メールアドレスのドメイン部分、つまり@記号の後の部分。
const pure nothrow @nogc @property scope @safe EmailStatusCode statusCode();
Returns:
電子メールのステータスコード
const pure nothrow @nogc @property scope @safe string status();
Returns:
ステータスコードを表す文字列
const pure scope @safe string toString();
Returns:
メールステータスのテキスト表現
pure nothrow @nogc @safe string statusCodeDescription(EmailStatusCode statusCode);
Parameters:
EmailStatusCode statusCode その EmailStatusCodeを読み取る
Returns:
与えられたステータスコードを表す詳細な文字列
enum EmailStatusCode: int;
Eメールアドレスが有効かどうかを示すEメールのステータスコード。 無効な場合はその理由も示す。
validCategory
アドレスは有効である
dnsWarning
アドレスは有効だが、DNSチェックに失敗した。
rfc5321
アドレスはSMTPでは有効だが、異常な要素がある
cFoldingWhitespace
アドレスはメッセージ内では有効だが、エンベロープではそのままでは使えない
deprecated_
アドレスは非推奨の要素を含むが、制限されたコンテキストではまだ有効かもしれない
rfc5322
アドレスはRFC 5322の広義の定義に従ってのみ有効である。それ以外は無効である。
any
より細かいエラーチェックがすべてオンになっている。エラーや警告を含むアドレスは無効とみなされる。 警告を含むアドレスは無効とみなされる。特定の電子メール・ステータス・コードが返される。 が返される。
none
アドレスは有効とみなされるか無効とみなされるかのどちらかである。 は実行されない。返されるEメールステータスコードは、ErrorまたはValidのいずれかである。
warning
警告を含むアドレスは有効とみなされる、 16以下のステータスコードは有効であるとみなされる。
error
アドレスはいかなる目的においても無効である
valid
アドレスは有効である
dnsWarningNoMXRecord
このドメインのMXレコードが見つからなかったが、Aレコードは存在する
dnsWarningNoRecord
このドメインのMXレコードまたはAレコードが見つからない
rfc5321TopLevelDomain
アドレスは有効だが、トップレベルドメインである
rfc5321TopLevelDomainNumeric
アドレスは有効だが、トップレベルドメインが数字で始まっている
rfc5321QuotedString
アドレスは有効だが、引用符で囲まれた文字列が含まれている
rfc5321AddressLiteral
アドレスは有効だが、ドメインではなくリテラルアドレスである
rfc5321IpV6Deprecated
アドレスは有効だが、::が含まれており、1つのゼログループだけが省略されている
comment
アドレスにコメントが含まれている
foldingWhitespace
アドレスにフォールディング・ホワイトスペースが含まれている
deprecatedLocalPart
ローカル部分が非推奨形式である
deprecatedFoldingWhitespace
アドレスに古い形式のフォールディング・ホワイトスペースが含まれている
deprecatedQuotedText
引用符で囲まれた文字列が非推奨の文字を含んでいる
deprecatedQuotedPair
引用符で囲まれたペアに非推奨の文字が含まれている
deprecatedComment
アドレスが非推奨の位置にコメントを含んでいる
deprecatedCommentText
コメントに非推奨の文字が含まれている
deprecatedCommentFoldingWhitespaceNearAt
アドレスに@記号の周りのコメントまたは折り返し空白が含まれている
rfc5322Domain
アドレスがRFC 5322に準拠しているが、DNSで許可されていないドメイン文字が含まれている
rfc5322TooLong
アドレスが長すぎる
rfc5322LocalTooLong
アドレスのローカル部分が長すぎる
rfc5322DomainTooLong
ドメイン部分が長すぎる
rfc5322LabelTooLong
ドメイン部分に長すぎる要素が含まれている
rfc5322DomainLiteral
ドメインリテラルが有効なRFC 5321アドレスリテラルではない
rfc5322DomainLiteralObsoleteText
ドメインリテラルが有効なRFC 5321アドレスリテラルではなく、旧式の文字が含まれている
rfc5322IpV6GroupCount
IPv6リテラルアドレスに誤った数のグループが含まれている
rfc5322IpV6TooManyDoubleColons
IPv6リテラルアドレスに::シーケンスが多すぎる
rfc5322IpV6BadChar
IPv6アドレスに不正な文字グループが含まれている
rfc5322IpV6MaxGroups
IPv6アドレスのグループの数が多すぎる
rfc5322IpV6ColonStart
IPv6アドレスがシングルコロンで始まる
rfc5322IpV6ColonEnd
IPv6アドレスがシングルコロンで終わっている
errorExpectingDomainText
ドメインリテラルに許可されていない文字が含まれている
errorNoLocalPart
アドレスにローカル部分がない
errorNoDomain
アドレスにドメイン部分がない
errorConsecutiveDots
アドレスに連続したドットが含まれていない
errorTextAfterCommentFoldingWhitespace
アドレスに、コメントまたはフォールディング・ホワイト・スペースの後のテキストが含まれている
errorTextAfterQuotedString
アドレスに引用符で囲まれた文字列の後のテキストが含まれている
errorTextAfterDomainLiteral
ドメイン・リテラルの末尾の後に余分な文字が見つかった
errorExpectingQuotedPair
アドレスに引用符で囲んだペアでは許可されない文字が含まれている
errorExpectingText
アドレスに許可されていない文字が含まれている
errorExpectingQuotedText
引用符で囲まれた文字列に許可されていない文字が含まれている
errorExpectingCommentText
コメントに使用できない文字が含まれている
errorBackslashEnd
アドレスがバックスラッシュで終わってはならない
errorDotStart
アドレスのどちらの部分もドットで始めてはならない
errorDotEnd
アドレスのどちらの部分もドットで終わることはできない
errorDomainHyphenStart
ドメインまたはサブドメインはハイフンで始めることはできない
errorDomainHyphenEnd
ドメインまたはサブドメインはハイフンで終わることはできない
errorUnclosedQuotedString
引用符で囲まれていない文字列
errorUnclosedComment
閉じていないコメント
errorUnclosedDomainLiteral
ドメインリテラルに閉じ括弧がない
errorFoldingWhitespaceCrflX2
折り返し空白文字に連続した CRLF が含まれている
errorFoldingWhitespaceCrLfEnd
折り返し空白文字が連続したCRLFで終わっている
errorCrNoLf
アドレスに改行が続かないキャリッジ・リターンが含まれている