【问题标题】:Exception while using Apache Commons Mail API from IBM Worklight Studio 5.0.5使用 IBM Worklight Studio 5.0.5 中的 Apache Commons Mail API 时出现异常
【发布时间】:2014-06-02 16:29:39
【问题描述】:

我一直在尝试在 Java 类中使用 Apache Commons API 来发送电子邮件。我从工作灯适配器调用此 Java 函数以发送电子邮件。

我在 Mac 上使用 Worklight Studio,工作室的版本是:5.0.5.20131003

这是一段Java代码:

package com.customclass.helper;
import org.apache.commons.mail.HtmlEmail; 

public class EmailHelper{

public static void sendHTMLMail (String serverHostName, String serverPort, String isSSLEnabledOnServer, String isTLSEnabledOnServer, String fromAddress, String toAddress, String cc, String bcc, String subject, String body){


HtmlEmail email = new HtmlEmail();
email.setHostName(serverHostName);
email.setSmtpPort(serverPort);
email.setSSLOnConnect(isSSLEnabledOnServer);
email.setStartTLSEnabled(isTLSEnabledOnServer);
email.addTo(toAddressArray);
email.addCc(ccArray);
email.addBcc(bcc);
email.setSubject(subject);
email.setMsg(body);
email.send();}}

这是从适配器调用它的方式:

com.customclass.helper.EmailHelper.sendHTMLMail(SMTP_SERVER_HOST, SMTP_SERVER_PORT, SMTP_SERVER_SSL_ENABLED, SMTP_SERVER_TLS_ENABLED, fromMailAddress, toAddress, cc, bcc, subject, body);

我使用的 SMTP 服务器不需要任何身份验证,也不能在 SSL 或 TLS 上运行,并且设置为 false。

当我将 Java 类作为独立的 Java 应用程序运行时,它可以正常工作,但是当使用适配器在 Worklight 服务器中使用它时,它会引发异常。异常中没有足够的信息供我调试问题。

这是堆栈跟踪:

Exception while sending email:Sending the email to the following server failed : my.smtp.server.com:25
                              com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:676)
                              javax.mail.Transport.send0(Transport.java:189)
                              javax.mail.Transport.send(Transport.java:118)
                              org.apache.commons.mail.Email.sendMimeMessage(Email.java:1400)
                              org.apache.commons.mail.Email.send(Email.java:1437)
                              com.customclass.helper.EmailHelper.sendHTMLMail(EmailHelper.java:131)
                              sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                              sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                              sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                              java.lang.reflect.Method.invoke(Method.java:597)
                              org.mozilla.javascript.MemberBox.invoke(MemberBox.java:161)
                              org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:247)
                              org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:86)
                              org.mozilla.javascript.gen._2FUsers_2F914854_2Fprojects_2Fcustom_2Fworkspaces_2Fphase2dec10_2FMyWorklightProject_2Fadapters_2FMessageAdapter_MessageAdapter_impl_js_593._c_sendEmail_1(%2FUsers%2F914854%2Fprojects%2Fcustom%2Fworkspaces%2Fphase2dec10%2FMyWorklightProject%2Fadapters%2FMessageAdapter/MessageAdapter-impl.js:91)
                              org.mozilla.javascript.gen._2FUsers_2F914854_2Fprojects_2Fcustom_2Fworkspaces_2Fphase2dec10_2FMyWorklightProject_2Fadapters_2FMessageAdapter_MessageAdapter_impl_js_593.call(%2FUsers%2F914854%2Fprojects%2Fcustom%2Fworkspaces%2Fphase2dec10%2FMyWorklightProject%2Fadapters%2FMessageAdapter/MessageAdapter-impl.js)
                              org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:426)
                              org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3178)
                              org.mozilla.javascript.gen._2FUsers_2F914854_2Fprojects_2Fcustom_2Fworkspaces_2Fphase2dec10_2FMyWorklightProject_2Fadapters_2FMessageAdapter_MessageAdapter_impl_js_593.call(%2FUsers%2F914854%2Fprojects%2Fcustom%2Fworkspaces%2Fphase2dec10%2FMyWorklightProject%2Fadapters%2FMessageAdapter/MessageAdapter-impl.js)
                              com.worklight.integration.js.JavaScriptManager.callFunction(JavaScriptManager.java:180)
                              com.worklight.integration.js.JavaScriptManager.invokeFunction(JavaScriptManager.java:156)
                              com.worklight.integration.services.impl.AdapterManagerImpl.invokeFunction(AdapterManagerImpl.java:101)
                              com.worklight.integration.js.JavaScriptProcedureInvoker.invoke(JavaScriptProcedureInvoker.java:42)
                              com.worklight.integration.model.ProcedureInvoker.invokeProcedure(ProcedureInvoker.java:57)
                              com.worklight.integration.model.Procedure.invoke(Procedure.java:165)
                              com.worklight.integration.model.InvocationContext.call(InvocationContext.java:150)
                              com.worklight.integration.model.InvocationContext.call(InvocationContext.java:34)
                              java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
                              java.util.concurrent.FutureTask.run(FutureTask.java:138)
                              java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
                              java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
                              java.lang.Thread.run(Thread.java:695)

我在 Worklight studios 嵌入式 Jetty 服务器上是否缺少某些事情要做?

【问题讨论】:

  • 我之前问过这个问题,但很遗憾,由于过去一个月没有更新,系统已将其删除,因此再次创建问题
  • 这不是问题的精确解决方案,但我解决此问题的方法是使用 Java 的邮件 API 而不是 Apache 的邮件 API。看起来 Apache 所依赖的一些 JAR/Java 类似乎不适用于 Worklight 服务器,无论是带有 IDE 的嵌入式服务器还是部署在 WAS 上的服务器
  • 我建议同时编写此解决方法作为答案。

标签: apache email jakarta-mail ibm-mobilefirst


【解决方案1】:

我通过使用 Java 的 Mail API 而不是 Apache 的邮件 API 解决了这个问题。看起来 Apache 所依赖的一些 JAR/Java 类似乎不适用于 Worklight 服务器,无论是带有 IDE 的嵌入式服务器还是部署在 WAS 上的服务器

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 2015-04-08
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多