MessagingException类没有像我认为的那样工作

时间:2013-12-13 09:41:41

标签: email post javamail

我正在开发一个发送电子邮件的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网页。

我可能会遗漏某些东西,还是这个班级无法检测到这些东西?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

使用strict InternetAddress构造函数并调用message.saveChanges()来执行验证。看到 Content-Type syntax check throws exception too late了解更多详情。

答案 1 :(得分:0)

请参阅this JavaMail FAQ entry

此外,由您的邮件服务器决定是立即尝试检测某些类型的错误,还是将所有请求排队,以后只检查错误。