【问题标题】:Read Inbox using Java使用 Java 阅读收件箱
【发布时间】:2013-02-12 19:49:52
【问题描述】:

我在一家公司实习,公司里的每个人都使用 Outlook 邮件。 我想不出一种从收件箱中阅读电子邮件的方法。

让我谈谈我的项目。我正在使用 JavaMail API 发送邮件。

我的第一个任务 - 使用我已成功完成的提醒系统从 java 程序发送邮件,使用主机、协议、用户名和无密码。无需输入密码,因为如果我尝试输入密码,它就会停止工作。它只有在没有密码的情况下才能工作。

所以基本上,我可以使用公司中的其他员工发送电子邮件,使用那里的电子邮件地址作为“发件人”,因为不需要输入密码,只能通过 java 程序。

我的第二个任务 - 阅读邮件主题和发件人详细信息并执行一些任务...

没有密码可以进入,但是

Store store = session.getStore("smtp"); 
//I tried with imap, pop3, but everything gives error "No Such Provided"


store.connect("email@domain.co.uk", "PASSWORD");

store.connect() 不允许我使用没有密码的方法。

该软件将使用一个新的电子邮件地址,该地址与用户 Outlook 中的地址不同,但为了测试,我首先使用我的电子邮件地址,因为该软件将被不同的用户/计算机使用。

如果我尝试这种方式

session.getStore("imaps");
store.connect("host","username","password");


Error:
DEBUG: getProvider() returning 
javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc]

DEBUG: mail.imap.fetchsize: 16384
DEBUG: mail.imap.statuscachetimeout: 1000
DEBUG: mail.imap.appendbuffersize: -1
 DEBUG: mail.imap.minidletime: 10

DEBUG: trying to connect to host "host", port 993, isSSL true

javax.mail.MessagingException: Connection refused: connect;
 nested exception is:


java.net.ConnectException: Connection refused: connect
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:618)
at javax.mail.Service.connect(Service.java:291)
at javax.mail.Service.connect(Service.java:172)

at TestMail.InboxReader.main(InboxReader.java:52)
    Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:570)
at 
    com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:141)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:284)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:227)
at com.sun.mail.iap.Protocol.<init>(Protocol.java:109)
at com.sun.mail.imap.protocol.IMAPProtocol.<init>(IMAPProtocol.java:104)
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:585)
... 3 more
   Java Result: 2

【问题讨论】:

  • 还有一件事,我正在使用带有 JavaMail API 的 Netbeans SE,我必须使用 Netbeans EE 还是一些 apache 服务器。因为我没有 JavaMail 的高级知识。
  • 贵公司的邮件服务器是什么?是 MS Exchange 服务器吗?
  • 是的,它是 MS Exchange 服务器!

标签: jakarta-mail


【解决方案1】:

使用 Exchange Web 服务 (EWS) API 与 Exchange Server 无缝集成。引用自 MS 网站

EWS 提供对通过 Microsoft Office Outlook 提供的大部分相同数据的访问。

EWS 基础知识 - http://msdn.microsoft.com/en-us/library/exchange/dd877045(v=exchg.140).aspx EWS Java API - http://archive.msdn.microsoft.com/ewsjavaapi

【讨论】:

    【解决方案2】:

    需要更多细节...

    查看JavaMail FAQ 并在失败时发布debug output。此外,您使用的确切代码可能会有所帮助。

    您可以使用 JavaMail 附带的代码对其进行全部测试,这样您就可以确定问题出在您的代码中还是其他问题上。请参阅 JavaMail 下载包中包含的 msgshow.java 演示程序。

    【讨论】:

    • 如果我使用本网站提供的代码,通过提供主机、端口、用户名-我的电子邮件地址、密码-我用来登录系统javaplex.com/blog/using-javamail-api-read-emails-from-gmail我会出现这个错误@987654324 @
    • @debug 输出 - 当我使用命令提示符并键入 telnet 主机端口时,我收到消息说 220 禁止未经授权使用。这是否意味着我没有访问权限?
    • 听起来就是这样。在您输入任何内容之前,您是否会在连接后立即收到该消息?你连接到哪个端口?也许您的服务器希望您在 SSL 端口上连接?
    • 我一连接就收到该消息,如果我不做任何事情,在 sm 次后我会收到另一条消息,因为连接断开。我使用端口 25 连接,但是如何连接到 ssl 端口?
    • 端口 25 是纯文本 SMTP 端口。如果您尝试连接到 IMAP 服务器,则需要使用正确的 IMAP 端口。你真正想要完成的事情变得令人困惑。也许您应该使用最新的代码和调试输出来更新您的问题?
    猜你喜欢
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 2014-03-01
    • 2012-05-04
    • 2011-11-15
    • 2014-05-20
    • 2011-06-01
    • 1970-01-01
    相关资源
    最近更新 更多