首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Java Camel应用程序连接到Python邮件服务器的问题

从Java Camel应用程序连接到Python邮件服务器的问题
EN

Stack Overflow用户
提问于 2020-04-29 15:19:14
回答 1查看 188关注 0票数 0

我有一个使用Python aiosmtpd包(https://github.com/aio-libs/aiosmtpd)实现的简单电子邮件服务器。我还有一个Apache应用程序,它的路由可以尝试从服务器获得邮件。

我已经成功地将邮件发送到服务器,并将其保存到一个目录中。然而,当我试图从服务器获得邮件时,我遇到了一个问题。Camel应用程序的错误消息是:

代码语言:javascript
复制
2020-04-29 10:51:54.476  WARN 17916 --- [/localhost:8025] o.a.c.c.m.MailConsumer                   : Consumer Consumer[imap://localhost:8025?delay=10000&unseen=true] failed polling endpoint: imap://localhost:8025?delay=10000&unseen=true. Will try again at next poll. Caused by: [javax.mail.AuthenticationFailedException - failed to connect, no user name specified?]

javax.mail.AuthenticationFailedException: failed to connect, no user name specified?
    at javax.mail.Service.connect(Service.java:373) ~[jakarta.mail-1.6.4.jar:1.6.4]
    at org.apache.camel.component.mail.MailConsumer.ensureIsConnected(MailConsumer.java:568) ~[camel-mail-3.1.0.jar:3.1.0]
    at org.apache.camel.component.mail.MailConsumer.poll(MailConsumer.java:126) ~[camel-mail-3.1.0.jar:3.1.0]
    at org.apache.camel.support.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:187) [camel-support-3.1.0.jar:3.1.0]
    at org.apache.camel.support.ScheduledPollConsumer.run(ScheduledPollConsumer.java:106) [camel-support-3.1.0.jar:3.1.0]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_241]
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:1.8.0_241]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_241]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:1.8.0_241]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_241]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_241]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_241]

邮件服务器不显示可见的消息。我不知道它是否保存着某种日志。当邮件被发送时,服务器会显示大量关于它从发件人那里接收到的消息的信息,所以它肯定会显示一些信息。

我不知道用户名应该是什么。此外,用户是否需要密码?我在aiosmtpd站点上找不到引用用户或密码的信息。

是否期望邮件服务器有一组已识别/授权的用户,而我需要指定其中之一?是否存在不需要用户/密码的问题?

这是骆驼的路线,供参考:

代码语言:javascript
复制
<route id="mail-receive">
  <from
    uri="imap://{{mail-client.server.host}}:{{mail-client.server.port}}?unseen=true&amp;delay=10000" />
  <log loggingLevel="INFO" message="start - mail-receive" />
  <to uri="file:{{mail-client.receive.dest-dir}}" />
  <log loggingLevel="INFO" message="end - mail-receive" />
</route>

下面是邮件服务器python脚本:

server.py:

代码语言:javascript
复制
#! /usr/bin/python3

import os
import asyncio
import logging
import tempfile

from aiosmtpd.controller import Controller
from aiosmtpd.handlers import Mailbox


async def mailbox_controller(dir):
    cont = Controller(Mailbox(dir), hostname='', port=8025)
    cont.start()


def main():
    logging.basicConfig(level=logging.DEBUG)

    temp_dir = tempfile.TemporaryDirectory()
    maildir_path = os.path.join(temp_dir.name, 'maildir')

    loop = asyncio.get_event_loop()
    loop.create_task(mailbox_controller(dir=maildir_path))

    try:
        loop.run_forever()
    except KeyboardInterrupt:
        logging.info('Shutting down')


if __name__ == '__main__':
    main()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-29 23:52:37

aiosmtpd是SMTP服务器。SMTP协议用于发送、中继或转发邮件,但不能使用它接收邮件。您需要将邮箱应用程序与IMAPPOP3的某些实现结合起来。

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

https://stackoverflow.com/questions/61505319

复制
相关文章

相似问题

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