Подтвердить что ты не робот

Как проверить почтовый адрес существует или нет?

Я отправляю электронную почту через Java, используя com.sun.mail.smtp.SMTPTransport.

Мне удастся отправить электронное письмо, но SMTPTransport не выдаст никакой ошибки, если я отправлю письмо на недействительный адрес электронной почты.

Есть ли способ проверить, что данный почтовый адрес существует или нет?

Я не хочу проверять почтовый адрес как клиентскую сторону, мне нужно проверить как серверную сторону.

Я нашел много вопросов, подобных этому на многих форумах, но у меня нет правильных решений.

Мой код -

String email = "[email protected]";

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 <[email protected]>"));
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","[email protected]","password");
st.sendMessage(msg, msg.getAllRecipients());

System.out.println("ServerResponse : " + st.getLastServerResponse());

Он выводит выходные данные как для действительного, так и для недействительного email_address: - 250 OK id = 1TbWgN-0007oY-8r

Пожалуйста, помогите мне решить проблему. Спасибо заранее.

4b9b3361

Ответ 1

Спасибо всем за ваши ответы.

Я могу решить свою проблему с помощью проверки записи MX.

Я использовал Ссылка, чтобы решить эту проблему. Пусть это также будет полезно для кого-то.

Hashtable env = new Hashtable();
env.put("java.naming.factory.initial",
             "com.sun.jndi.dns.DnsContextFactory");
DirContext ictx = new InitialDirContext( env );
Attributes attrs = ictx.getAttributes
                       ( hostName, new String[] { "MX" });
Attribute attr = attrs.get( "MX" );
if (( attr == null ) || ( attr.size() == 0 )) {
   attrs = ictx.getAttributes( hostName, new String[] { "A" });
   attr = attrs.get( "A" );
   if( attr == null )
         throw new NamingException
                  ( "No match for name '" + hostName + "'" );
}

Спасибо.

Ответ 2

Единственный способ подтвердить адрес электронной почты - отправить ему электронное письмо и потребовать от пользователя следовать (уникальной) ссылке в письме на ваш сайт.

Ответ 3

Перейти на (уникальную) ссылку на электронном письме на вашем сайте