从独立类收到的Java电子邮件,但在servlet中执行时不会收到

从独立类收到的Java电子邮件,但在servlet中执行时不会收到,java,email,servlets,Java,Email,Servlets,使用Java,我可以从一个玩具独立类(带有硬编码数据)发送电子邮件,并且在几秒钟内收到电子邮件 然而,当在servlet的上下文中调用完全相同的代码时,代码执行不会失败,但我实际上没有收到电子邮件 怎么可能呢?servlet环境有什么特别之处吗? 我正在运行Tomcat6,JRE 1.5 以下是代码(我已编辑数据): } 编辑:当内容(电子邮件正文)较小时接收电子邮件。当内容较大时,不会收到 这根本与java无关 我用普通的电子邮件客户端测试了一封大型电子邮件。我们也看到了同样的行为:电子邮件发

使用Java,我可以从一个玩具独立类(带有硬编码数据)发送电子邮件,并且在几秒钟内收到电子邮件

然而,当在servlet的上下文中调用完全相同的代码时,代码执行不会失败,但我实际上没有收到电子邮件

怎么可能呢?servlet环境有什么特别之处吗? 我正在运行Tomcat6,JRE 1.5

以下是代码(我已编辑数据):

}


编辑:当内容(电子邮件正文)较小时接收电子邮件。当内容较大时,不会收到

这根本与java无关


我用普通的电子邮件客户端测试了一封大型电子邮件。我们也看到了同样的行为:电子邮件发送得很好,但出于某种原因,我没有及时收到它。(我以前没有见过这种行为,但它确实存在……

Hm,它是本地(您的PC)Tomcat实例还是远程(托管)Tomcat实例?你检查日志了吗(你的异常处理有点笨拙)?SMTP服务器是否相同,是否有任何安全规则(中继、转发)?本地实例(我的电脑)。日志中没有任何内容。相同的SMTP服务器(所有道具数据完全相同)。Jar在这两种情况下都显示了邮件规范的1.4版本。该方法真的执行了吗?你能确认你看到了
系统.out
消息吗?它与电子邮件的内容有关。当我把它截短为3个短单词时,就可以了。“真实”电子邮件的内容更长,如下所述:调试日志显示电子邮件发送时没有错误。也许这只是因为电子邮件传输的速度变慢,因为它的大小?不过它不是很大。。
public void sendEmail(String aSubject, String aBody){
Properties props = new Properties();
props.put("mail.host", "smtp.blah.ca");
props.put("mail.from", "from-blah@blah.ca");
Session session = Session.getDefaultInstance(props, null /*no authenticator*/);
System.out.println("JRE" + System.getProperty("java.version"));
System.out.println(session.getProperties());
MimeMessage message = new MimeMessage(session);
try {
  message.addRecipient(
    Message.RecipientType.TO, new InternetAddress("to-blah@blah.com")
  );
  message.setSubject(aSubject);
  message.setText(aBody);
  Transport.send(message);
}
catch (MessagingException ex){
  System.err.println("Cannot send email. " + ex);
}