z.B. Bei den Kommentaren, nach abschicken des Formulars kommt eine leere Seite mit dieser Fehlermeldung "FEHLER: Bitte gib eine gültige E-Mail-Adresse an." Habe es mit mehreren gültigen E-mail Adressen versucht immer das selbe.
die Fehlermeldung wird tatsächlich von WordPress erzeugt.
Suche: Bitte gib eine gültige E-Mail-Adresse an.
Ergebnis:
~/wp-content/languages/de_DE.po (2 hits)
Line 5228: msgstr "Diese E-Mail-Adresse scheint keine gültige E-Mail-Adresse zu sein. Bitte gib eine gültige E-Mail-Adresse an."
Line 5239: msgstr "<strong>FEHLER</strong>: Bitte gib eine gültige E-Mail-Adresse an."
Datei öffnen: de_DE.po Zeile 5239
#: wp-includes/comment.php:2774
msgid "<strong>ERROR</strong>: please enter a valid email address."
msgstr "<strong>FEHLER</strong>: Bitte gib eine gültige E-Mail-Adresse an."
Datei öffnen: wp-includes/comment.php Zeile 2774
if ( get_option( 'require_name_email' ) && ! $user->exists() ) {
if ( 6 > strlen( $comment_author_email ) || '' == $comment_author ) {
return new WP_Error( 'require_name_email', __( '<strong>ERROR</strong>: please fill the required fields (name, email).' ), 200 );
} elseif ( ! is_email( $comment_author_email ) ) {
return new WP_Error( 'require_valid_email', __( '<strong>ERROR</strong>: please enter a valid email address.' ), 200 );
}
}
is_email suchen:
und gefunden:
/**
* Verifies that an email is valid.
*
* Does not grok i18n domains. Not RFC compliant.
*
* @since 0.71
*
* @param string $email Email address to verify.
* @param bool $deprecated Deprecated.
* @return string|bool Either false or the valid email address.
*/
function is_email( $email, $deprecated = false ) {
if ( ! empty( $deprecated ) )
_deprecated_argument( __FUNCTION__, '3.0' );
// Test for the minimum length the email can be
if ( strlen( $email ) < 3 ) {
/**
* Filter whether an email address is valid.
*
* This filter is evaluated under several different contexts, such as 'email_too_short',
* 'email_no_at', 'local_invalid_chars', 'domain_period_sequence', 'domain_period_limits',
* 'domain_no_periods', 'sub_hyphen_limits', 'sub_invalid_chars', or no specific context.
*
* @since 2.8.0
*
* @param bool $is_email Whether the email address has passed the is_email() checks. Default false.
* @param string $email The email address being checked.
* @param string $context Context under which the email was tested.
*/
return apply_filters( 'is_email', false, $email, 'email_too_short' );
}
// Test for an @ character after the first position
if ( strpos( $email, '@', 1 ) === false ) {
/** This filter is documented in wp-includes/formatting.php */
return apply_filters( 'is_email', false, $email, 'email_no_at' );
}
// Split out the local and domain parts
list( $local, $domain ) = explode( '@', $email, 2 );
// LOCAL PART
// Test for invalid characters
if ( !preg_match( '/^[a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]+$/', $local ) ) {
/** This filter is documented in wp-includes/formatting.php */
return apply_filters( 'is_email', false, $email, 'local_invalid_chars' );
}
// DOMAIN PART
// Test for sequences of periods
if ( preg_match( '/\.{2,}/', $domain ) ) {
/** This filter is documented in wp-includes/formatting.php */
return apply_filters( 'is_email', false, $email, 'domain_period_sequence' );
}
// Test for leading and trailing periods and whitespace
if ( trim( $domain, " \t\n\r\0\x0B." ) !== $domain ) {
/** This filter is documented in wp-includes/formatting.php */
return apply_filters( 'is_email', false, $email, 'domain_period_limits' );
}
// Split the domain into subs
$subs = explode( '.', $domain );
// Assume the domain will have at least two subs
if ( 2 > count( $subs ) ) {
/** This filter is documented in wp-includes/formatting.php */
return apply_filters( 'is_email', false, $email, 'domain_no_periods' );
}
// Loop through each sub
foreach ( $subs as $sub ) {
// Test for leading and trailing hyphens and whitespace
if ( trim( $sub, " \t\n\r\0\x0B-" ) !== $sub ) {
/** This filter is documented in wp-includes/formatting.php */
return apply_filters( 'is_email', false, $email, 'sub_hyphen_limits' );
}
// Test for invalid characters
if ( !preg_match('/^[a-z0-9-]+$/i', $sub ) ) {
/** This filter is documented in wp-includes/formatting.php */
return apply_filters( 'is_email', false, $email, 'sub_invalid_chars' );
}
}
// Congratulations your email made it!
/** This filter is documented in wp-includes/formatting.php */
return apply_filters( 'is_email', $email, $email, null );
}
Alles anzeigen
mmh... sieht richtig aus...
eine gültige mail Adresse ist:
/*
Als Lokalteil (englisch local part) wird der Teil einer E-Mail-Adresse bezeichnet, der die Adresse innerhalb der Domain des E-Mail-Providers eindeutig bezeichnet. Typischerweise entspricht der Lokalteil dem Benutzernamen (häufig ein Pseudonym) des Besitzers des E-Mail-Kontos. Eine Ausnahme von dieser Regel stellen z. B. Alias-Adressen dar (siehe E-Mail-Konto). Bei E-Mail-Verteilern und Mailinglisten ist der Lokalteil nicht auf eine einzelne Person bezogen.
Der Lokalteil muss eine bezüglich „domain“ eindeutige Zeichenkette sein. Diese Zeichenkette darf nach RFC 5322 nur Buchstaben und Zahlen sowie bestimmte weitere Zeichen enthalten: A-Za-z0-9.!#$%&'*+-/=?^_`{|}~. Der gesamte Lokalteil (oder ein mittels Punkten umrandeter Teilabschnitt des Lokalteils) können in doppelte Anführungszeichen gefasst werden (z. B. "MaxMustermann"@example.com oder Max."Musterjunge".Mustermann@example.com). Innerhalb dieser Anführungszeichen dürfen – zusätzlich zu den bereits genannten Zeichen – auch noch Leerstellen und die Zeichen "(),:;<>@[\] (ASCII: 32, 34, 40, 41, 44, 58, 59, 60, 62, 64, 91–93) benutzt werden. (z. B. "Max Mustermann"@example.com.) Die Zeichen \ (Backslash) und " (Anführungsstriche) müssten darin allerdings mittels eines Backslash-Zeichens „maskiert“ werden. Darüber hinaus können innerhalb von runden Klammern Kommentare eingefügt werden. Dies ist allerdings nur am Anfang und am Ende des Lokalteils erlaubt. (Beispiel: MaxMuster(Kommentar)@example.com oder (Kommentar)MaxMuster@example.com). Alle Zeichen oberhalb des ASCII-Codes 127, also auch Umlaute, waren bis vor kurzem verboten. Seit RFC 6531, welcher im Jahr 2012 eröffnet wurde, sind jedoch auch viele UNICODE-Zeichen (internationale Buchstaben vieler Länder) erlaubt. Am Anfang und Ende der Zeichenkette darf sich kein Punkt befinden.
*/
https://tools.ietf.org/html/rfc5322