Moqui - 通过 SSL 连接连接到 IMAP 服务器?
Moqui - Connecting to an IMAP server over an SSL connection?
我正尝试在 Moqui 1.5.4 中轮询电子邮件服务器。我正在使用 'tools' 应用程序中的 org.moqui.impl.EmailServices.poll#EmailServer。
邮件服务器设置如下:
<moqui.basic.email.EmailServer emailServerId="testEmail" mailUsername="test.account@xxxxxxx.ie" mailPassword="xxxxxxxx" smtpHost="" smtpPort="" smtpSsl="" storeHost="Webmail8.xxxxxxxxxxx.ie" storePort="993" storeProtocol="imap" storeDelete="N" />
所有条目、密码均已在Outlook 上测试过,连接到服务器没有问题。
我得到一个 javax.mail.AuthenticationFailedException。
附加信息:
在初始测试中,我收到了以下错误消息,因此我从代码中指示的行中删除了 'static' 修饰符。 (我还不确定这是否是一个问题,或者我是否做错了什么。)
--- 98330 [ndlerThread[15]] WARN moqui.impl.context.TransactionFacadeImpl
Transaction rollback. The rollback was originally caused by: startup failed:
classpath_//org/moqui/impl/pollEmailServer_groovy: 28: Modifier 'static' not allowed here.
@ line 28, column 1.
final static Logger logger = LoggerFactory.getLogger("org.moqui.impl.pollEmailServer")
我尝试查看是否可以解决问题的一些事情包括:
- 设置存储协议="imaps"
- 在 EmailServer 条目中包含 smtp 详细信息(注意我只需要轮询,不需要发送邮件)。
将以下行添加到 pollEmailServer.groovy(已查看 com.sun.mail.imap 包)。
sessionProperties.put("mail.imap.ssl.enable", true)
完整身份验证失败的错误消息是:
错误运行宁服务[org.moqui.impl.EmailServices.poll#EmailServer](Throwable)
javax.mail.AuthenticationFailedException
在 javax.mail.Service.connect(Service.java:306)
在 javax.mail.Service.connect(Service.java:156)
在 javax.mail.Service.connect(Service.java:105)
在 pollEmailServer_groovy.run(pollEmailServer_groovy:47)
在 org.moqui.impl.context.runner.GroovyScriptRunner.run(GroovyScriptRunner.groovy:50)
在 org.moqui.impl.context.ResourceFacadeImpl.script(ResourceFacadeImpl.groovy:337)
在 org.moqui.impl.service.runner.ScriptServiceRunner.runService(ScriptServiceRunner.groovy:49)
在 org.moqui.impl.service.ServiceCallSyncImpl.callSingle(ServiceCallSyncImpl.groovy:260)
在 org.moqui.impl.service.ServiceCallSyncImpl.call(ServiceCallSyncImpl.groovy:137)
在 ServiceRun_xml_transition_run_actions.run(ServiceRun_xml_transition_run_actions:10)
在 org.moqui.impl.actions.XmlAction.run(XmlAction.groovy:99)
在 org.moqui.impl.screen.ScreenDefinition$TransitionItem.run(ScreenDefinition.groovy:659)
在 org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:223)
在 org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:217)
在 org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:217)
在 org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:217)
在 org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:217)
在 org.moqui.impl.screen.ScreenRenderImpl.internalRender(ScreenRenderImpl.groovy:301)
在 org.moqui.impl.screen.ScreenRenderImpl.render(ScreenRenderImpl.groovy:164)
在 org.moqui.impl.webapp.MoquiServlet.doScreenRequest(MoquiServlet.groovy:71)
在 org.moqui.impl.webapp.MoquiServlet.doPost(MoquiServlet.groovy:37)
在 javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
在 javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
在 net.winstone.core.ServletCotion.execute(ServletConfiguration.java:270)
在 net.winstone.core.SimpleRequestDispatcher.forward(SimpleRequestDispatcher.java:290)
在 net.winstone.core.listener.RequestHandlerThread.processRequest(RequestHandlerThread.java:212)
在 net.winstone.core.listener.RequestHandlerThread.run(RequestHandlerThread.java:143)
在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
在 java.util.concurrent.FutureTask.run(FutureTask.java:266)
在 net.winstone.util.BoundedExecutorService$1.run(BoundedExecutorService.java:81)
在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
在 java.lang.Thread.run(Thread.java:745)
附录:使用电子邮件 ECA 规则轮询后处理邮件。
当我在 EmailEcaRule.groovy 中打开记录器信息时,我可以看到我的电子邮件 ECA 中的条件一直评估为 'false'。但不应该吗?
======== EMECA Process Received Email conditionPassed? false My condition: TestEmail fields:
(请注意,我将 "My condition: ${fields.subject}" 插入到记录器信息中以仔细检查我的条件表达式是否正确。)
我的 emeca 是:
<emecas xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://moqui.org/xsd/email-eca-1.5.xsd">
<emeca rule-name="Process Received Email">
<condition><expression>fields.subject == 'TestEmail'</expression></condition>
<actions>
<service-call name="org.moqui.impl.EmailServices.save#EcaEmailMessage" />
</actions>
</emeca>
</emecas>
我已经测试并重新测试了这个。我不知道为什么它评估为假。如果需要任何其他信息,请告诉我。
仍然没有解决这个问题。我一定是在做傻事。我在 EmailEcaRule.groovy 中注释掉了 if (conditionPassed) {} 以绕过我在电子邮件 ECA 规则中的条件,只是 运行 操作,但现在它因 "Cannot invoke method get() on null object" 错误而挂断org.moqui.impl.EmailServices.save#EcaEmailMessage,大概在 headers.get('message-id') 上。但是我在日志信息中看到消息Id在headers信息中,并且成功转换为小写。
这有一些问题。首先是 Moqui 使用的是旧版本的 JavaMail(现在更新到 1.5.4)。另一个是密码是如何传递的,更普遍的是,在 poll#EmailServer 服务脚本如何使用 JavaMail API.
方面还有很大的改进空间。
自提交 #bf0f872 起,已有各种更改。我能够使用 storeProtocol=imaps、storePort=993 等成功连接
回答您的问题:如果没有这些代码更改,我认为无法通过 SSL 进行连接。换句话说,这最终更像是一个错误报告而不是一个问题。
我正尝试在 Moqui 1.5.4 中轮询电子邮件服务器。我正在使用 'tools' 应用程序中的 org.moqui.impl.EmailServices.poll#EmailServer。
邮件服务器设置如下:
<moqui.basic.email.EmailServer emailServerId="testEmail" mailUsername="test.account@xxxxxxx.ie" mailPassword="xxxxxxxx" smtpHost="" smtpPort="" smtpSsl="" storeHost="Webmail8.xxxxxxxxxxx.ie" storePort="993" storeProtocol="imap" storeDelete="N" />
所有条目、密码均已在Outlook 上测试过,连接到服务器没有问题。
我得到一个 javax.mail.AuthenticationFailedException。
附加信息:
在初始测试中,我收到了以下错误消息,因此我从代码中指示的行中删除了 'static' 修饰符。 (我还不确定这是否是一个问题,或者我是否做错了什么。)
--- 98330 [ndlerThread[15]] WARN moqui.impl.context.TransactionFacadeImpl
Transaction rollback. The rollback was originally caused by: startup failed:
classpath_//org/moqui/impl/pollEmailServer_groovy: 28: Modifier 'static' not allowed here.
@ line 28, column 1.
final static Logger logger = LoggerFactory.getLogger("org.moqui.impl.pollEmailServer")
我尝试查看是否可以解决问题的一些事情包括:
- 设置存储协议="imaps"
- 在 EmailServer 条目中包含 smtp 详细信息(注意我只需要轮询,不需要发送邮件)。
将以下行添加到 pollEmailServer.groovy(已查看 com.sun.mail.imap 包)。
sessionProperties.put("mail.imap.ssl.enable", true)
完整身份验证失败的错误消息是:
错误运行宁服务[org.moqui.impl.EmailServices.poll#EmailServer](Throwable)
javax.mail.AuthenticationFailedException
在 javax.mail.Service.connect(Service.java:306)
在 javax.mail.Service.connect(Service.java:156)
在 javax.mail.Service.connect(Service.java:105)
在 pollEmailServer_groovy.run(pollEmailServer_groovy:47)
在 org.moqui.impl.context.runner.GroovyScriptRunner.run(GroovyScriptRunner.groovy:50)
在 org.moqui.impl.context.ResourceFacadeImpl.script(ResourceFacadeImpl.groovy:337)
在 org.moqui.impl.service.runner.ScriptServiceRunner.runService(ScriptServiceRunner.groovy:49)
在 org.moqui.impl.service.ServiceCallSyncImpl.callSingle(ServiceCallSyncImpl.groovy:260)
在 org.moqui.impl.service.ServiceCallSyncImpl.call(ServiceCallSyncImpl.groovy:137)
在 ServiceRun_xml_transition_run_actions.run(ServiceRun_xml_transition_run_actions:10)
在 org.moqui.impl.actions.XmlAction.run(XmlAction.groovy:99)
在 org.moqui.impl.screen.ScreenDefinition$TransitionItem.run(ScreenDefinition.groovy:659)
在 org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:223)
在 org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:217)
在 org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:217)
在 org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:217)
在 org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:217)
在 org.moqui.impl.screen.ScreenRenderImpl.internalRender(ScreenRenderImpl.groovy:301)
在 org.moqui.impl.screen.ScreenRenderImpl.render(ScreenRenderImpl.groovy:164)
在 org.moqui.impl.webapp.MoquiServlet.doScreenRequest(MoquiServlet.groovy:71)
在 org.moqui.impl.webapp.MoquiServlet.doPost(MoquiServlet.groovy:37)
在 javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
在 javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
在 net.winstone.core.ServletCotion.execute(ServletConfiguration.java:270)
在 net.winstone.core.SimpleRequestDispatcher.forward(SimpleRequestDispatcher.java:290)
在 net.winstone.core.listener.RequestHandlerThread.processRequest(RequestHandlerThread.java:212)
在 net.winstone.core.listener.RequestHandlerThread.run(RequestHandlerThread.java:143)
在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
在 java.util.concurrent.FutureTask.run(FutureTask.java:266)
在 net.winstone.util.BoundedExecutorService$1.run(BoundedExecutorService.java:81)
在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
在 java.lang.Thread.run(Thread.java:745)
附录:使用电子邮件 ECA 规则轮询后处理邮件。
当我在 EmailEcaRule.groovy 中打开记录器信息时,我可以看到我的电子邮件 ECA 中的条件一直评估为 'false'。但不应该吗?
======== EMECA Process Received Email conditionPassed? false My condition: TestEmail fields:
(请注意,我将 "My condition: ${fields.subject}" 插入到记录器信息中以仔细检查我的条件表达式是否正确。)
我的 emeca 是:
<emecas xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://moqui.org/xsd/email-eca-1.5.xsd">
<emeca rule-name="Process Received Email">
<condition><expression>fields.subject == 'TestEmail'</expression></condition>
<actions>
<service-call name="org.moqui.impl.EmailServices.save#EcaEmailMessage" />
</actions>
</emeca>
</emecas>
我已经测试并重新测试了这个。我不知道为什么它评估为假。如果需要任何其他信息,请告诉我。
仍然没有解决这个问题。我一定是在做傻事。我在 EmailEcaRule.groovy 中注释掉了 if (conditionPassed) {} 以绕过我在电子邮件 ECA 规则中的条件,只是 运行 操作,但现在它因 "Cannot invoke method get() on null object" 错误而挂断org.moqui.impl.EmailServices.save#EcaEmailMessage,大概在 headers.get('message-id') 上。但是我在日志信息中看到消息Id在headers信息中,并且成功转换为小写。
这有一些问题。首先是 Moqui 使用的是旧版本的 JavaMail(现在更新到 1.5.4)。另一个是密码是如何传递的,更普遍的是,在 poll#EmailServer 服务脚本如何使用 JavaMail API.
方面还有很大的改进空间。自提交 #bf0f872 起,已有各种更改。我能够使用 storeProtocol=imaps、storePort=993 等成功连接
回答您的问题:如果没有这些代码更改,我认为无法通过 SSL 进行连接。换句话说,这最终更像是一个错误报告而不是一个问题。