簡體   English   中英

在部署到tomcat的GWT Servlet中使用Java sendmail發送郵件

[英]sending mail with java sendmail in GWT servlet deployed to tomcat

我有一個用Java 1.7編譯的eclipse項目,並被解析為tomcat6。當我使用下面的代碼發送電子郵件時,出現以下錯誤:

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目錄。

盡管關於堆棧溢出有一兩個類似的報告,但似乎都沒有提供解決此問題的方法。

解決了

原因 :谷歌應用引擎已在較早的階段添加到項目中。 Google應用引擎類遮蓋了javax.mail類,因此在源中導入的javax.mail類不會在IDE中顯示為未解析的引用。 因此,我無意間編譯了App Engine版本。 將App Engine代碼部署到自己的服務器上會導致此錯誤,因為引用了錯誤的類庫。

解決方案

  1. 在不添加GWT應用引擎功能的情況下重建項目。
  2. 創建一個庫文件夾,導入所需的java mail .jar文件並添加到構建路徑:對於Eclipse IDE:右鍵單擊這些文件,然后選擇“添加以構建路徑”。
  3. 重新編譯並部署到自己的服務器。 代碼(如上)將起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM