使用Java读取收件箱

时间:2013-02-07 19:15:23

标签: javamail

我作为实习生在一家公司工作,公司的每个人都使用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()不允许我使用没有密码的方法。

该软件将使用新的电子邮件地址,该地址与用户展望的地址不同,但用于测试我首先使用的是我的电子邮件地址,因为该软件将由不同的用户/计算机使用。

如果我这样试试

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

需要更多详情...

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

您可以使用JavaMail附带的代码对所有代码进行测试,以便确定问题是否在您的代码或其他内容中。请参阅JavaMail下载包中包含的msgshow.java演示程序。