首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Moqui -通过SSL连接连接到IMAP服务器?

Moqui -通过SSL连接连接到IMAP服务器?
EN

Stack Overflow用户
提问于 2015-10-27 12:35:07
回答 1查看 143关注 0票数 0

我正试图在Moqui1.5.4中轮询一个电子邮件服务器。我正在使用“工具”应用程序中的org.moqui.impl.EmailServices.poll#EmailServer。

电子邮件服务器设置如下:

代码语言:javascript
复制
<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。

附加信息:

在初始测试中,我收到了以下错误消息,因此我从代码中指定的行中删除了“静态”修饰符。(我还不确定这是个问题,还是我可能做错了什么。)

代码语言:javascript
复制
--- 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")                                         

我试着看看是否能解决这个问题,包括:

  • 设置storeProtocol="imaps“
  • 在EmailServer条目中包括smtp详细信息(注意:我只需要轮询,而不是发送邮件)。
  • 将下面的行添加到pollEmailServer.groovy中(查看了com.sun.mail.imap包)。 sessionProperties.put("mail.imap.ssl.enable", true)

完全身份验证失败的错误消息是:

运行服务org.moqui.impl.EmailServices.poll#EmailServer错误

javax.mail.AuthenticationFailedException

代码语言:javascript
复制
     at javax.mail.Service.connect(Service.java:306)
代码语言:javascript
复制
     at javax.mail.Service.connect(Service.java:156)
代码语言:javascript
复制
     at javax.mail.Service.connect(Service.java:105)
代码语言:javascript
复制
     at pollEmailServer\_groovy.run(pollEmailServer\_groovy:47)
代码语言:javascript
复制
     at org.moqui.impl.context.runner.GroovyScriptRunner.run(GroovyScriptRunner.groovy:50)
代码语言:javascript
复制
     at org.moqui.impl.context.ResourceFacadeImpl.script(ResourceFacadeImpl.groovy:337)
代码语言:javascript
复制
     at org.moqui.impl.service.runner.ScriptServiceRunner.runService(ScriptServiceRunner.groovy:49)
代码语言:javascript
复制
     at org.moqui.impl.service.ServiceCallSyncImpl.callSingle(ServiceCallSyncImpl.groovy:260)
代码语言:javascript
复制
     at org.moqui.impl.service.ServiceCallSyncImpl.call(ServiceCallSyncImpl.groovy:137)
代码语言:javascript
复制
     at ServiceRun\_xml\_transition\_run\_actions.run(ServiceRun\_xml\_transition\_run\_actions:10)
代码语言:javascript
复制
     at org.moqui.impl.actions.XmlAction.run(XmlAction.groovy:99)
代码语言:javascript
复制
     at org.moqui.impl.screen.ScreenDefinition$TransitionItem.run(ScreenDefinition.groovy:659)
代码语言:javascript
复制
     at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:223)
代码语言:javascript
复制
     at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:217)
代码语言:javascript
复制
     at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:217)
代码语言:javascript
复制
     at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:217)
代码语言:javascript
复制
     at org.moqui.impl.screen.ScreenRenderImpl.recursiveRunTransition(ScreenRenderImpl.groovy:217)
代码语言:javascript
复制
     at org.moqui.impl.screen.ScreenRenderImpl.internalRender(ScreenRenderImpl.groovy:301)
代码语言:javascript
复制
     at org.moqui.impl.screen.ScreenRenderImpl.render(ScreenRenderImpl.groovy:164)
代码语言:javascript
复制
     at org.moqui.impl.webapp.MoquiServlet.doScreenRequest(MoquiServlet.groovy:71)
代码语言:javascript
复制
     at org.moqui.impl.webapp.MoquiServlet.doPost(MoquiServlet.groovy:37)
代码语言:javascript
复制
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
代码语言:javascript
复制
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
代码语言:javascript
复制
     at net.winstone.core.ServletCotion.execute(ServletConfiguration.java:270)
代码语言:javascript
复制
     at net.winstone.core.SimpleRequestDispatcher.forward(SimpleRequestDispatcher.java:290)
代码语言:javascript
复制
     at net.winstone.core.listener.RequestHandlerThread.processRequest(RequestHandlerThread.java:212)
代码语言:javascript
复制
     at net.winstone.core.listener.RequestHandlerThread.run(RequestHandlerThread.java:143)
代码语言:javascript
复制
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
代码语言:javascript
复制
     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
代码语言:javascript
复制
     at net.winstone.util.BoundedExecutorService$1.run(BoundedExecutorService.java:81)
代码语言:javascript
复制
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
代码语言:javascript
复制
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
代码语言:javascript
复制
     at java.lang.Thread.run(Thread.java:745)               

增编:使用ECA .进行邮件轮询后处理这些消息

当我打开EmailEcaRule.groovy中的记录器信息时,我可以看到,在我的电子邮件中,ECA的状态一直被评估为“false”。但不应该是吗?

代码语言:javascript
复制
======== EMECA Process Received Email conditionPassed? false My condition: TestEmail fields: 

(请注意,我在记录器信息中插入了"My condition:${fields.subject}“,以重复检查条件表达式的原样。)

我的emeca是:

代码语言:javascript
复制
<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在标头信息中,并成功地转换为小写。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-27 17:20:37

这有几个问题。首先,Moqui使用的是JavaMail的旧版本(现在更新为1.5.4)。另一个问题是密码是如何传递的,更普遍地说,poll#EmailServer服务的脚本使用JavaMail API的方式还有很大的改进余地。

截至提交#bf0f872,有各种更改。我能够成功地使用storeProtocol=imaps、storePort=993等进行连接。

要回答您的问题:如果没有这些代码更改,我认为通过SSL进行连接是不可能的。换句话说,与其说这是一个问题,不如说这是一个错误报告。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33368154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档