我正在开发一个发送电子邮件的Web应用程序,并且必须检查,实际上这封邮件已经在几秒钟内尽可能地从我的应用程序端传送(我认为你不能做多于得到电子邮件已经发送到电子邮件服务器,如果该电子邮件服务器以后无法将该电子邮件发送给使用它的用户,因为它的收件箱已满或者其他情况如此,我认为它无法帮助,尽管如果有的话我想知道它的方式。)
无论如何,我认为可以毫无问题地检查一件事是,如果电子邮件地址不存在,因为它给出了一个中间响应,根据我读过的内容可以通过类MessageException完成,但我有以下内容代码:
String email=Utils.parseString(req,"email");
[....]
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.EnableSSL.enable","true");
Session s = Session.getInstance(props, null);
MimeMessage message = new MimeMessage(s);
try {
InternetAddress from = new InternetAddress(emailadressthatworks);
message.setFrom(from);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
return;
}
try {
InternetAddress to = new InternetAddress(email);
message.addRecipient(Message.RecipientType.TO, to);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
resp.sendRedirect("webpage.jsp");
return;
}
try {
message.setSubject("Subject");
message.setText("message");
Transport.send(message);
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
resp.sendRedirect("webpage.jsp");
return;
}
[....]
无论随机字符串我签署电子邮件,它都不会在Transport.send(message)中抛出MessagingException;所以我可以根据我所读到的内容将其重定向到另一个jsp网页。
我可能会遗漏某些东西,还是这个班级无法检测到这些东西?
感谢您的帮助。
答案 0 :(得分:0)
使用strict InternetAddress构造函数并调用message.saveChanges()
来执行验证。看到
Content-Type syntax check throws exception too late了解更多详情。
答案 1 :(得分:0)
此外,由您的邮件服务器决定是立即尝试检测某些类型的错误,还是将所有请求排队,以后只检查错误。