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

8

我开发了一个可以向用户发送电子邮件的安卓应用。
但是有些电子邮件地址是无效的。
如何检查用户输入的电子邮件地址是否有效?

9个回答

30

如果您想检查电子邮件的有效性,可以使用以下方法:

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();
    }

1
为什么不直接使用 return target != null && android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches(); 呢? - Hamzeh Soboh
@HamzehSoboh你的答案也是正确的,我已经编辑了我的答案,感谢提醒。 - Shayan Pourvatan
@ShayanPourvatan,相比使用正则表达式,您的解决方案是否更好? - stebak
@KBJ,我的解决方案和比较正则表达式没有区别,因为在我的答案中,我们使用电子邮件正则表达式匹配字符串。 - Shayan Pourvatan

12

这段代码完全正常,它会给你一个布尔值。如果为真,则返回真;如果为假,则返回假。

         android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();

2
您可以使用正则表达式来验证电子邮件地址,因此:
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();
}

这里有更多可供选择的正则表达式链接

2

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


1
请使用下面的代码:
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();
    }

1

无法确认电子邮件是否真实有效。但您可以仅检查它是否符合正确的格式。


1
无法确定电子邮件是否存在。特别是在像yopmail这样的网站上,我认为他们会接受任何账户的任何邮件。

不过,您可以进行以下检查:

1。地址是否具有正确的语法并位于注册域上(使用正则表达式检查语法,并使用DNS检查@后面的站点是否有邮件服务器)

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

1

Use :

if (!Patterns.EMAIL_ADDRESS.matcher(your_edit_text.getText().toString()).matches()){
    loginEmail.setError("Please enter a Valid E-Mail Address!");
}else {
    //email is valid
}

0

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

fun String.isValidEmail(): Boolean { return android.util.Patterns.EMAIL_ADDRESS.matcher(this).matches() }


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接