我正试图在Moqui1.5.4中轮询一个电子邮件服务器。我正在使用“工具”应用程序中的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。
附加信息:
在初始测试中,我收到了以下错误消息,因此我从代码中指定的行中删除了“静态”修饰符。(我还不确定这是个问题,还是我可能做错了什么。)
--- 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") 我试着看看是否能解决这个问题,包括:
sessionProperties.put("mail.imap.ssl.enable", true)完全身份验证失败的错误消息是:
运行服务org.moqui.impl.EmailServices.poll#EmailServer错误
javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:306) at javax.mail.Service.connect(Service.java:156) at javax.mail.Service.connect(Service.java:105) at pollEmailServer\_groovy.run(pollEmailServer\_groovy:47) at org.moqui.impl.context.runner.GroovyScriptRunner.run(GroovyScriptRunner.groovy:50) at org.moqui.impl.context.ResourceFacadeImpl.script(ResourceFacadeImpl.groovy:337) at org.moqui.impl.service.runner.ScriptServiceRunner.runService(ScriptServiceRunner.groovy:49) at org.moqui.impl.service.ServiceCallSyncImpl.callSingle(ServiceCallSyncImpl.groovy:260) at org.moqui.impl.service.ServiceCallSyncImpl.call(ServiceCallSyncImpl.groovy:137) at ServiceRun\_xml\_transition\_run\_actions.run(ServiceRun\_xml\_transition\_run\_actions:10) at org.moqui.impl.actions.XmlAction.run(XmlAction.groovy:99) at org.moqui.impl.screen.ScreenDefinition$TransitionItem.run(ScreenDefinition.groovy:659) at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:223) at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:217) at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:217) at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:217) at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:217) at org.moqui.impl.screen.ScreenRenderImpl.internalRender(ScreenRenderImpl.groovy:301) at org.moqui.impl.screen.ScreenRenderImpl.render(ScreenRenderImpl.groovy:164) at org.moqui.impl.webapp.MoquiServlet.doScreenRequest(MoquiServlet.groovy:71) at org.moqui.impl.webapp.MoquiServlet.doPost(MoquiServlet.groovy:37) at javax.servlet.http.HttpServlet.service(HttpServlet.java:713) at javax.servlet.http.HttpServlet.service(HttpServlet.java:806) at net.winstone.core.ServletCotion.execute(ServletConfiguration.java:270) at net.winstone.core.SimpleRequestDispatcher.forward(SimpleRequestDispatcher.java:290) at net.winstone.core.listener.RequestHandlerThread.processRequest(RequestHandlerThread.java:212) at net.winstone.core.listener.RequestHandlerThread.run(RequestHandlerThread.java:143) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at net.winstone.util.BoundedExecutorService$1.run(BoundedExecutorService.java:81) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at 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>我又测试了又重新测试了这个。我不知道它为什么被认为是错误的。如果需要更多的信息,请告诉我。
还是没办法解决这个问题。我一定是在做傻事。我在org.moqui.impl.EmailServices.save#EcaEmailMessage,中注释了if (conditionPassed) {},以绕过电子邮件ECA规则中的条件,只运行操作,但现在它被挂起,导致conditionPassed中的“无法调用方法get() on null对象”错误,这可能是在headers.get('message-id')上的错误。但我可以在日志信息中看到消息Id在标头信息中,并成功地转换为小写。
发布于 2015-10-27 17:20:37
这有几个问题。首先,Moqui使用的是JavaMail的旧版本(现在更新为1.5.4)。另一个问题是密码是如何传递的,更普遍地说,poll#EmailServer服务的脚本使用JavaMail API的方式还有很大的改进余地。
截至提交#bf0f872,有各种更改。我能够成功地使用storeProtocol=imaps、storePort=993等进行连接。
要回答您的问题:如果没有这些代码更改,我认为通过SSL进行连接是不可能的。换句话说,与其说这是一个问题,不如说这是一个错误报告。
https://stackoverflow.com/questions/33368154
复制相似问题