在部署到tomcat的GWT servlet中用java sendmail发送邮件

时间:2015-03-11 06:12:09

标签: java eclipse email tomcat gwt

我有一个在java 1.7中编译的eclipse项目,并且已经使用了tomcat 6.当我使用下面的代码发送电子邮件时,我收到以下错误:

at com.google.appengine.api.mail.stdimpl.GMTransport.sendMessage(GMTransport.java:236)
at javax.

maicom.google.apphosting.api.ApiProxy$CallNotFoundException: The API package 'mail' or call 'Send()' was not found.
    at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:109)
    at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:64)
    at com.google.appengine.api.mail.MailServiceImpl.doSend(MailServiceImpl.java:101)
    at com.google.appengine.api.mail.MailServiceImpl.send(MailServiceImpl.java:34)
l.Transport.send(Transport.java:95)
    at javax.mail.Transport.send(Transport.java:48)
...

代码是:

  try {

      Message msg = new MimeMessage(session);

    msg.setFrom(new InternetAddress(from, "hello from admin"));
    msg.addRecipient(Message.RecipientType.TO,
    new InternetAddress(to, “user”));
    msg.setSubject(subject);
    msg.setText(message);


      Transport.send(msg);


  } catch (AddressException e) {
    myPrint("Address exception: "+e);

      // ...
  } catch (MessagingException e) {
    myPrint("Messaging exception: "+e);

      // ...
  }

在创建和部署war文件之前,我已将最新的oracle mail.jar和相关的lib文件夹放入war / WEB-INF / lib目录中。

虽然有一两个关于堆栈溢出的类似报告,但似乎没有提供解决此问题的方法。

1 个答案:

答案 0 :(得分:0)

<强>解决

原因:Google应用引擎已在较早阶段添加到项目中。 Google应用引擎类会影响javax.mail类,以便源中的javax.mail类的导入不会在IDE中显示为未解析的引用。因此,我在不知不觉中使用应用引擎版本进行编译。将应用程序引擎代码部署到自己的服务器会导致此错误,因为正在引用错误的类库。

解决方案

  1. 在不添加GWT应用引擎功能的情况下重建项目。
  2. 创建一个库文件夹,导入所需的java mail .jar文件 并添加到构建路径:对于Eclipse IDE:右键单击文件和 选择添加到构建路径。
  3. 重新编译并部署到自己的服务器。然后代码(如上所述) 工作