私たちのWebアプリケーションは、電子メールIDを入力するすべてのユーザーに電子メールを送信します。しかし、私はどのようにユーザーが入力した電子メールIDが有効であることを確認することができます。実際には、ユーザーが電子メールIDを入力したときに何をするのですか?電子メールを送信するコードがあります。しかし、メールIDが存在しない場合でも、エラーは発生しません。問題を解決する方法を教えてください。電子メールIDが実際に存在しない場合は、何らかのエラーが発生するはずです。電子メールアドレスを確認する方法は、実際にJavaでメールを送信することによって存在します
私はここにこれを行うにはフールプルーフな方法はありません
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" )");
}
}
私はあなたの答えを得た。私たちのアプリケーションでは、ユーザーの携帯電話に通知を送信します。それから、私は携帯電話番号と電子メールアドレスの両方を検証するために秘密の分割を行うことができます。私はランダムな文字列を生成し、2つの部分に分割され、1つはモバイルに送信され、他のものはメールIDに送信されます。その後、ユーザーをアクティブにするには、それらを組み合わせて両方を入力する必要があります。モバイルIDと電子メールIDを同時に検証するのに適していますか? – kanchan
はい。一意のIDを生成し、それをユーザーのモバイル番号に対してデータベース表に保管することもできます。ユーザーにも送信してください。ユーザーが一意のIDを入力すると、IDがデータベースに格納されたIDと一致します。 – kandarp