Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java邮件API-Can';无法正确设置端口_Java_Jakarta Mail - Fatal编程技术网

Java邮件API-Can';无法正确设置端口

Java邮件API-Can';无法正确设置端口,java,jakarta-mail,Java,Jakarta Mail,如前所述,您应该使用更多或更少的方法—始终使用Java Mail API的getInstance()方法来正确设置属性 让我们检查一下我的代码: [...] Properties properties = new Properties(); properties.put("mail.store.protocol", "imaps"); properties.put("mail.imap.port", "143"); properties.put("mail.imap.ssl.enable", "

如前所述,您应该使用更多或更少的方法—始终使用Java Mail API的getInstance()方法来正确设置属性

让我们检查一下我的代码:

[...]
Properties properties = new Properties();
properties.put("mail.store.protocol", "imaps");
properties.put("mail.imap.port", "143");
properties.put("mail.imap.ssl.enable", "true");  
properties.put("mail.imaps.partialfetch", "false");
properties.put("mail.mime.base64.ignoreerrors", "true");

Session session = Session.getInstance(properties);
session.setDebug(true);
Store store = session.getStore("imaps");
store.connect(host, userName, password);

Folder imapFolder = store.getFolder(folderName);
imapFolder.open(Folder.READ_WRITE);


Message[] messages = imapFolder.search(new FlagTerm(new 
lags(Flags.Flag.SEEN), false));

[...]
是否看到我的端口属性设置为“143”?让我们跳到mail api调试控制台输出:

DEBUG: setDebug: JavaMail version 1.5.6
DEBUG: getProvider() returning javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle]
DEBUG IMAPS: mail.imap.partialfetch: false
DEBUG IMAPS: mail.imap.ignorebodystructuresize: false
DEBUG IMAPS: mail.imap.statuscachetimeout: 1000
DEBUG IMAPS: mail.imap.appendbuffersize: -1
DEBUG IMAPS: mail.imap.minidletime: 10
DEBUG IMAPS: closeFoldersOnStoreFailure
DEBUG IMAPS: trying to connect to host "imap.gmail.com", port 993, isSSL true
* OK Gimap ready for requests from 213.189.150.34 r25-v6mb373781038edd
A0 CAPABILITY
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH2 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN AUTH=OAUTHBEARER AUTH=XOAUTH
A0 OK Thats all she wrote! r25-v6mb373781038edd
DEBUG IMAPS: AUTH: XOAUTH2
DEBUG IMAPS: AUTH: PLAIN
DEBUG IMAPS: AUTH: PLAIN-CLIENTTOKEN
DEBUG IMAPS: AUTH: OAUTHBEARER
DEBUG IMAPS: AUTH: XOAUTH
DEBUG IMAPS: protocolConnect login, host=imap.gmail.com, user="myuser", password="mypassword"
DEBUG IMAPS: AUTHENTICATE PLAIN command trace suppressed
DEBUG IMAPS: AUTHENTICATE PLAIN command result: A1 OK "myuser" authenticated (Success)
A2 CAPABILITY
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT LIST-EXTENDED LIST-STATUS LITERAL- SPECIAL-USE APPENDLIMIT=35651584
A2 OK Success
DEBUG IMAPS: connection available -- size: 1
A3 SELECT WhiteListedMembers
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen $NotPhishing $Phishing)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen $NotPhishing $Phishing \*)] Flags permitted.
* OK [UIDVALIDITY 12] UIDs valid.
* 379 EXISTS
* 0 RECENT
* OK [UIDNEXT 386] Predicted next UID.
* OK [HIGHESTMODSEQ 65275]
A3 OK [READ-WRITE] WhiteListedMembers selected. (Success)
A4 SEARCH UNSEEN ALL
* SEARCH
A4 OK SEARCH completed (Success)
Unreaded messages in inbox: 0
A5 UNSELECT
A5 OK Returned to authenticated state. (Success)
DEBUG IMAPS: added an Authenticated connection -- size: 1
A6 LOGOUT
我的问题是:为什么java mail api仍然使用端口993?是否有自动端口映射? 我就是不明白

有人能给这带来光明吗

非常感谢您的回答和赞助时间

致意 马特


操作系统:Windows 10、Eclipse Oxygen 4.7.0、Java Oracle JRE 1.8.0 131、Java Mail API 1.5.6

您真的在端口143上使用SSL运行IMAP吗?这充其量是“不寻常的”


如果使用默认端口,则无需设置端口属性。只需使用“imap”协议并设置“mail.imap.ssl.enable”属性,JavaMail就会选择正确的默认端口。

尝试
mail.imaps.port=143
?亲爱的Usagi,正确。现在一切正常。非常感谢!比尔,谢谢你的评论。143只是一个肯定会失败的测试端口。Iirc google mail使用带有ssl端口的标准imap(您可以在第二个代码段中看到)。无论如何,要求在数据库中配置端口。