我使用com.sun.mail.smtp.SMTPTransport通过Java发送电子邮件.
我成功发送了电子邮件,但如果我将邮件发送到无效的电子邮件地址,则SMTPTransport不会出现任何错误.
有没有办法检查给定的邮件地址是否存在?
我不是要将邮件地址检查为客户端,我需要检查为服务器端.
我在很多论坛上发现了很多这样的问题,但我没有得到任何合适的解决方案.
我的代码是 -
String email = "reciever@theirDomain.com";
Properties props = new Properties();
props.put("mail.smtps.host", "mail.myDomain.com");
props.put("mail.smtps.auth", "true");
Session session = Session.getInstance(props, null);
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("Mail Demo <my_email@myDomain.com>"));
msg.setRecipients(Message.RecipientType.TO, email);
msg.setSubject("Mail Example");
msg.setSentDate(new Date(System.currentTimeMillis()));
String txt = "Message Body";
msg.setText(txt);
SMTPTransport st = (SMTPTransport)session.getTransport("smtps");
st.connect("mail.myDomain.com","my_email@myDomain.com","password");
st.sendMessage(msg, msg.getAllRecipients());
System.out.println("ServerResponse : " + st.getLastServerResponse());
Run Code Online (Sandbox Code Playgroud)
它为有效和无效的email_address提供输出: - 250 OK id = 1TbWgN-0007oY-8r
请帮我解决这个问题.提前致谢.
我一直试图弄清楚如何以编程方式检查 gmail 帐户是否存在。几乎所有搜索都会导致验证服务,例如 xverify 或 EmailOversight,您可以在其中根据每个请求的成本验证任何电子邮件地址。
我感兴趣的是一种无需中间人就可以直接做到这一点的方法。换句话说,这些验证服务是如何做到的?似乎谷歌应该提供某种 API 供这些人 ping 以查看电子邮件地址是否有效。
请注意,我对检查电子邮件地址的语法不感兴趣。所以我不是在寻找某种正则表达式解决方案。
此外,我尝试连接到 gmail.com MX 记录域(例如 alt3.gmail-smtp-in.l.google.com)并尝试通过运行简单的 SMTP 命令来提取电子邮件地址的有效性。基本上本文建议的内容:https : //www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/
但我不能为任何类型的卷做到这一点。Gmail 将在一定数量的连接后开始阻止您的连接尝试。因此该方法不可扩展。这就是为什么我觉得有另一种方式。
*******添加*********
这就是为什么这个问题与如何以编程方式检查电子邮件是否存在不同的原因
那篇文章只提供了一种解决方案,我已经尝试过了——使用 SMTP 命令。谷歌不会允许以任何规模这样做。如果我只需要验证几封电子邮件,那将是一个明智的解决方案,但如果我有 10,000 封电子邮件,那就不是了。