Java Android检查电子邮件地址是否有效?

Java Android检查电子邮件地址是否有效?,java,android,Java,Android,我开发了一款android应用程序,可以向用户发送电子邮件。 但事实证明,某些电子邮件地址无效。 如何检查用户输入的电子邮件地址是否有效?无法检查电子邮件是否真实。但您只能检查验证是否格式正确。检查电子邮件是否真实的最好方法可能是向该地址发送一封电子邮件,其中包含验证码/链接,该验证码/链接将激活您网站上的该用户。使用正则表达式只能确保电子邮件有效,但不一定是真实的如果要检查电子邮件的有效性,可以使用: public static boolean isValidEmail(CharSequenc

我开发了一款android应用程序,可以向用户发送电子邮件。
但事实证明,某些电子邮件地址无效。

如何检查用户输入的电子邮件地址是否有效?

无法检查电子邮件是否真实。但您只能检查验证是否格式正确。

检查电子邮件是否真实的最好方法可能是向该地址发送一封电子邮件,其中包含验证码/链接,该验证码/链接将激活您网站上的该用户。使用正则表达式只能确保电子邮件有效,但不一定是真实的

如果要检查电子邮件的有效性,可以使用:

public static boolean isValidEmail(CharSequence target) {
    if (target == null) {
        return false;
    } else {
        return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
    }
}
但是没有办法找出哪个电子邮件地址是真实的

可以使用以下方法删除if/else

public static boolean isValidEmail(CharSequence target) {
       return target != null && android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
    }

没有办法知道电子邮件是否存在。特别是如果它是在像yopmail或类似的网站上,我相信它会接受他们域内任何帐户的任何邮件

但是,您可以检查:

1。如果地址的语法正确且位于注册域中(regex查看语法和dns检查
@
后面是否有站点的邮件服务器)

2。发送电子邮件并检查响应,如果邮件未在其网站上注册,某些提供商可能会向您发回错误。

使用以下代码:

if(validateEmail(mEdtTxtEmail.getText().toString().trim())){
            // your code        
                }

private boolean validateEmail(String data){
        Pattern emailPattern = Pattern.compile(".+@.+\\.[a-z]+");
        Matcher emailMatcher = emailPattern.matcher(data);
        return emailMatcher.matches();
    }

您可以使用正则表达式验证电子邮件地址,因此:

public boolean isEmailValid(String email)
{
    final String EMAIL_PATTERN =
        "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
    final Pattern pattern = Pattern.compile(EMAIL_PATTERN);
    final Matcher matcher = pattern.matcher(email);
    return matcher.matches();
}

是一个包含更多可供选择的正则表达式的链接。

此代码运行良好,并为您提供一个布尔值。所以如果它是真的,它会给你真的和假的,它会给你假的

         android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
使用:


下面是一个使用Kotlin扩展的Kotlin版本(扩展String对象,因此您可以调用
stringName.isValidEmail()

fun String.isValidEmail():布尔值{
返回android.util.Patterns.EMAIL_ADDRESS.matcher(this.matches())

}

为什么不返回target!=null&&android.util.Patterns.EMAIL\u ADDRESS.matcher(target.matches());@HamzehSoboh您的答案也是正确的,我已经编辑了我的答案,谢谢您的提醒。@ShayanPourvatan与使用正则表达式相比,您的解决方案是更好的选择吗?@KBJ我的解决方案和比较正则表达式没有区别,因为在我的答案中,我们将字符串与电子邮件正则表达式匹配
if (!Patterns.EMAIL_ADDRESS.matcher(your_edit_text.getText().toString()).matches()){
    loginEmail.setError("Please enter a Valid E-Mail Address!");
}else {
    //email is valid
}