我有一个在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目录中。
虽然有一两个关于堆栈溢出的类似报告,但似乎没有提供解决此问题的方法。
答案 0 :(得分:0)
<强>解决强>
原因:Google应用引擎已在较早阶段添加到项目中。 Google应用引擎类会影响javax.mail类,以便源中的javax.mail类的导入不会在IDE中显示为未解析的引用。因此,我在不知不觉中使用应用引擎版本进行编译。将应用程序引擎代码部署到自己的服务器会导致此错误,因为正在引用错误的类库。
解决方案: