Nuestra aplicación web envía un correo electrónico a cada usuario que ingresa su ID de correo electrónico. Pero ¿cómo puedo asegurarme de que el ID de correo electrónico ingresado por el usuario sea válido? En realidad, lo que hacemos cuando un usuario ingresa un ID de correo electrónico le enviamos un enlace a su ID de correo electrónico para activar la cuenta. Tengo un código para enviar correos electrónicos. Pero no me da ningún error, incluso si la identificación del correo no existe. ¿Podrías decirme cómo resolver el problema? Si la identificación del correo electrónico no existe realmente, debería dar un error.Cómo verificar que realmente exista una dirección de correo electrónico enviando un correo electrónico a java
estoy aquí adjunto mi código
package csv;
import javax.mail.PasswordAuthentication;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class email {
public void send(String recipeintEmail,
String subject,
String messageText,String[] attachments)
throws MessagingException, AddressException {
/*
It is a good practice to put this in a java.util.Properties
file and encrypt password. Scroll down
to comments below to see
how to use java.util.Properties in JSF context.
*/
String senderEmail = "our email address";
String senderMailPassword = "password";
String gmail = "smtp.gmail.com";
Properties props = System.getProperties();
props.put("mail.smtp.user", senderEmail);
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "465");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.debug", "true");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
// Required to avoid security exception.
email.MyAuthenticator authentication =
new email.MyAuthenticator(senderEmail,senderMailPassword);
Session session =
Session.getDefaultInstance(props,authentication);
session.setDebug(true);
MimeMessage message = new MimeMessage(session);
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(messageText);
// Add message text
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
// Attachments should reside in your server.
// Example "c:\file.txt" or "/home/user/photo.jpg"
for (int i=0; i < attachments.length; i++) {
messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(attachments[i]);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(attachments [i]);
multipart.addBodyPart(messageBodyPart) ;
}
message.setContent(multipart);
message.setSubject(subject);
message.setFrom(new InternetAddress(senderEmail));
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(recipeintEmail));
Transport transport = session.getTransport("smtps");
transport.connect(gmail,465, senderEmail, senderMailPassword);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
private class MyAuthenticator extends javax.mail.Authenticator {
String User;
String Password;
public MyAuthenticator (String user, String password) {
User = user;
Password = password;
}
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new javax.mail.PasswordAuthentication(User, Password);
}
}
public static void main(String args[]) throws MessagingException
{
// email e=new email();
// String at[]={"c:/COPYRIGHT.txt"};
// e.send("[email protected]", "hello","test" )");
}
}
bien. Tengo tu respuesta. en nuestra aplicación también enviamos notificaciones a los teléfonos móviles de los usuarios. Entonces, ¿puedo ir a segmentar spliting para validar tanto el número de teléfono móvil como la dirección de correo electrónico? Generaré una cadena aleatoria, se dividirá en 2 partes, una se enviará al móvil y otra se enviará a la dirección de correo electrónico. Luego, al activar al usuario, debe ingresar ambos combinándolos. ¿Será una buena forma de validar la identificación del móvil y del correo electrónico en el momento? – kanchan
sí. también puede generar una identificación única y almacenarla en la tabla de la base de datos contra el número de teléfono móvil del usuario. y enviar al usuario también. Cuando el usuario ingresa su identificación única, cámbiela con su id. Almacenada de la base de datos. – kandarp