问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java如何验证一个email地址是否真实有效。

发布网友 发布时间:2022-04-20 02:12

我来回答

6个回答

懂视网 时间:2022-05-02 20:46

问题

由于业务上的需求,重新改写了校验email的正则表达式,同时DB里又迁移了其他数据库的数据,现在需要重新对DB里的所有email再校验一次,以排除掉不合法的email。

DB里的数据很多,手动去一个个校验的做法显然是不靠谱的,这种机械的重复性操作,自然是要用程序来解决才是最简易的。

做法

拼接字符串

首先是将DB里所有的email都拼接成一个字符串,由于用的是PostgreSQL,所以直接使用现有的字符串拼接函数string_agg()
具体用法如下:

select string_agg(email, ‘;‘) from cnt_user where is_latest;

大意就是拿到所有的最新版本的用户的email,以‘;‘作为间隔符,将这些email拼接起来,得到的结果就是:test1@qq.com;test2@qq.com...

在程序中进行校验

自己写一个测试类,把刚刚db查询到的字符串复制进来,通过String类的split()将其进行切割成一个String数组,然后遍历该数组,通过正则表达式去一个个校验,将那些校验不通过的email给打印出来。

注意:这种方法不适用于email数量特别多的情况,如果String数组的大小超过3亿多,会报内存溢出OutOfMemoryError的错误。

大概的思路如下:

/** Regex for single EmailValidator */
public static final String SINGLE_EMAIL_REGEX = "(?:(?:[A-Za-z0-9\-_@!#$%&‘*+/=?^`{|}~]|(?:\\[\x00-\xFF]?)|"
+ "(?:"[\x00-\xFF]*"))+(?:\.(?:(?:[A-Za-z0-9\-_@!#$%&‘*+/=?^`{|}~])|(?:\\[\x00-\xFF]?)|"
+ "(?:"[\x00-\xFF]*"))+)*)@(?:(?:[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\.)+"
+ "(?:(?:[A-Za-z0-9]*[A-Za-z][A-Za-z0-9]*)(?:[A-Za-z0-9-]*[A-Za-z0-9])?))";
public static final Pattern SINGLE_EMAIL_REGEX_PATTERN = Pattern.compile(SINGLE_EMAIL_REGEX);
...
final String emailString = "******"; //DB里通过函数拼接起来的email字符串
final String[] emails = emailString.split(";");
for (final String email : emails) {
 final Matcher matcher = SINGLE_EMAIL_REGEX_PATTERN.matcher(email);
 if (!matcher.matches()) {
 System.out.println("The email is invalid: " + email);
 }
}

如果不合法的email有很多的话,还可以通过poi将这些email输出到一个文档中。

怎么快速对DB里的所有email进行校验

标签:pil   新版   mpi   正则表达式   final   HERE   sel   int   java   

热心网友 时间:2022-05-02 17:54

  首先使用java提供的格式类判断email是否格式有误,然后使用开源框架,验证邮箱是否有用,示例如下:

public static boolean checkEmail(String email) {
        if (!email.matches("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+")) {
            return false;
        }
 
        String host = "";
        String hostName = email.split("@")[1];
        Record[] result = null;
        SMTPClient client = new SMTPClient();
 
        try {
            // 查找MX记录
            Lookup lookup = new Lookup(hostName, Type.MX);
            lookup.run();
            if (lookup.getResult() != Lookup.SUCCESSFUL) {
                return false;
            } else {
                result = lookup.getAnswers();
            }
 
            // 连接到邮箱服务器
            for (int i = 0; i < result.length; i++) {
                host = result[i].getAdditionalName().toString();
                client.connect(host);
                if (!SMTPReply.isPositiveCompletion(client.getReplyCode())) {
                    client.disconnect();
                    continue;
                } else {
                    break;
                }
            }
 
            //以下2项自己填写快速的,有效的邮箱
            client.login("163.com");
            client.setSender("sxgkwei@163.com");
            client.addRecipient(email);
            if (250 == client.getReplyCode()) {
                return true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                client.disconnect();
            } catch (IOException e) {
            }
        }
        return false;
    }
 
需要的jar支持:commons-net-2.2.jar,dnsjava-2.1.1.jar

热心网友 时间:2022-05-02 19:12

这个嘛我觉得是不可能的!首先你注册不同的email 是注册到不同网站的数据库中,各个网站不可能让你到他们的数据库中查找这个email 是否存在,所以你这个问题不存在!可以忽略!

热心网友 时间:2022-05-02 20:46

这个无法判断0 0.
如注册。只能首先使用正则表达式,要求正确输入。。然后程序发送电子邮件到输入的邮箱,进行二次确认,方可。这个时候对方就需要进入邮箱进行一系列操作。
只能这样。希望对你有帮助

热心网友 时间:2022-05-02 22:38

检测是不是合法的地址跟检测它是不是存在是两码事。是不是合法是由电子邮件是否符合email协议中定义的格式;是不是存在,是在合法的基础上看这个email是否已被注册。一般情况下看是否合法是比较常用的,其中用正则确实是比较公用的方法。而是否存在,这要分两种情况,1 对于该服务器来说,这个邮箱是否存在,这比较简单,就是查一下数据库中是否有相应的邮箱数据罢了,这可以用来检测该用户名是否在该server下注册了邮箱;另一种就是你说的我现在要发某一封邮件去一个邮箱,发之前我想确认一下该邮箱是否存在,这个就比较麻烦了,而且一般是作不到的,因为邮件server完全可以不提供相应的api给你,所以你也可以看到一般邮箱的认证就是发一封邮件到你邮箱里,让你自己登录去点某个链接去认证,所以你还是死心了吧。

热心网友 时间:2022-05-03 00:46

正则
java如何验证一个email地址是否真实有效。

首先使用java提供的格式类判断email是否格式有误,然后使用开源框架,验证邮箱是否有用,示例如下:public static boolean checkEmail(String email) { if (!email.matches("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+")) { return false; } String host = ""; String ...

发送邮件api公司选哪个?

判断一个发送邮件api公司的好坏,不只是看价格,还要考虑很多因素。建议可以多对比几个看看。您可以到摩杜云了解下。摩杜云成立于2019年,依托于公司多年技术沉淀和强大的云计算研发实力,面向全世界各个国家和地区、企业组织和个人开发者,提供...

java 验证邮箱是否存在

一般的验证是 验证邮件地址格式是否正确,如果你需要验证邮箱是否存在就需要发个邮件过去,即使发过去 你也不知道是否存在,除非有邮件返回。所以一般只是验证邮件格式是否正确就可以了。

...地址有效性的验证 1. 提示用户输入一个email地址,若用户的输入不合法...

好麻烦,直接用正则表达式来检查用户输入的e-mail规不规范,直接提示用户:“您输入的e-amil不符合规范“或者”邮箱输入不正确“就OK啦。或者是Struts框架,就直接建立validate.xml文件验证。一般检验都是放在前端用JS来检验,不管是JS还是Java,用邮箱的正则表达式来检验就行了 ...

如何引用java的这一个验证邮箱地址格式是否正确的类?

if(regexInput.emailFormat(txt_email.getText())){ }else{ dlg.messageDlg("您填写的Email格式错误,请核对后再修改!");//你确定本句能起作用吗?}

利用Java的字符串处理技术,编写一个验证Email地址合法性的程序_百度...

实现原理,实际上就是输入一个字符串,之后通过正则表达式验证此字符串是否符合邮箱的格式规范,通过以下工具类即可:import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegisterCheck { /** * 验证输入的邮箱格式是否符合 * @param email * @return 是否合法 ...

如何用java检验电子邮箱格式的合法性?要用到String的方法来判断_百度知 ...

自己写逻辑验证的方式可以做到。我写了下面的:public static boolean validateEmail(String email) { boolean flag = false;int pos = email.indexOf("@");if (pos == -1 || pos == 0 || pos == email.length() - 1) { return false;} String[] strings = email.split("@");if ...

java里进一步完善用户邮箱的合法性的验证!

public static boolean checkEmail(String email){boolean flag = false;try{String check = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";Pattern regex = Pattern.compile(check);Matcher matcher = regex.matcher(email...

如何使用java validation api进行参数校验

CreditCardNumber 对信用卡号进行一个大致的验证 DecimalMax 只能小于或等于该值 DecimalMin 只能大于或等于该值 Digits(integer=,fraction=) 检查是否是一种数字的整数、分数,小数位数的数字 Email 检查是否是一个有效的email地址 Future 检查该字段的日期是否是属于将来的日期 Length(mi...

问JAVA高手!在java中如何判断E-mail的格式是否正确,请给我一段正确的...

alert("密码不能少于6个字符!");return false;} if(form.npassword.value==""){ alert("请再次输入密码!");return false;} if(form.password.value!=form.npassword.value){ alert("两次输入密码不相同!");return false;} if(form.email.value=="" || !( /^[^@]+@[^@]+\.[^@...

...判断输入框里输入的是不是一个邮箱地址? 也就是大家平时用的邮箱登...

String emailPattern = "[0-9a-zA-Z_\\-]+@[0-9a-zA-Z_\\-]+(\\.[0-9a-zA-Z_\\-]+){1,}";System.out.println("12345".matches(emailPattern));System.out.println("czc@hotmail.com".matches(emailPattern));

用java验证email地址 有效的email邮箱地址 有效的email地址 验证邮箱是否有效 jquery验证email email验证 email的验证规则 有效email大全 如何验证电子邮件
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...是价值工程活动的中心环节,按功能的性质分类,可将功能分为... ...自己家的win8笔记本突然找不到自己家的wifi了 上次关机前还可以的... 迪士尼动画片都有哪些 放置江湖梦境多少层 放置江湖剑阵怎么过 放置江湖落英谷重光攻略 制药工程可以考执业药师吗?本科生毕业几年可以考?有的地方查到是一年... 请问制药工程专业本科毕业的学生,在药厂工作了3年,能考些什么证书... 放置江湖赌场副本怎么打 放置江湖蹭血方法介绍_放置江湖蹭血方法是什么 java电子邮件格式验证的算法 老山界的赏析 成长中的欢笑与泪水六百字作文记叙文开头 爬过那座山记叙文600字 请大家帮改下这篇作文谢谢了 给个翻过那座山作文的题纲,内容是是人生的坎坷、磨... 爬山挫折的作文片断(没打错),初中的。谢谢,亲... 3.立意 以“翻过这座山”为题写一篇文章 请问越过这个坎,翻过这座山的作文怎么写? 爬过那座山作文记叙文600字大家帮帮忙找找 求事例,要写作文“翻越那座山”,就是一些经过鼓舞... 求《翻过那座山》的作文素材,不要太大众化的,符... 翻过那座山作文 求作文作文《翻过那座山》 要求:记叙文,点题,有... 我终于翻过了那座山》600字初三水平要求有高兴.,... 阅读下面的文字,根据要求作文。(60分)翻过山,... 翻过那座山600字记叙文 翻过那座山作文200字 作文: 翻过山,出现了故乡的田园,亲人的笑脸;翻... 作文,《我翻过了那座山》初中,要原创的 如何用java检验电子邮箱格式的合法性?要用到Strin... 什么是最好的Java电子邮件地址验证方法 不能使用正则表达式,按以下需求验证一个字符串是... JAVA发送邮件验证异常 java mail 怎么验证邮箱是否连通 和 帐号密码是否正确 javaee 发送电子邮件验证 在java的电子邮件验证正则表达式问题,怎么解决 java里如何判断Email是否发送成功 如何:验证字符串是否为有效的电子邮件格式 blackberry开发中,如何验证邮箱格式的正确性? 电子邮件格式验证问题,求解var ptn1=/^([a-zA-Z0-... email地址格式不正确 如何判断电子邮件的地址格式... 求正则表达式验证邮箱格式 java发送html格式邮件是否能有js java 怎么实现发送邮件例子 Java收发邮件过程中具体的功能是怎么实现的 电路漏电保护开关有响声怎么办? 漏电保护器合闸之后一嗞嗞响是怎么回事 电闸总滋滋响有危险吗? 家用漏电保护器有声响