gpt4 book ai didi

java - 来自 POP3Folder 的邮件的 UID 始终为空

转载 作者:太空宇宙 更新时间:2023-11-04 12:35:01 25 4
gpt4 key购买 nike

我编写了一个java程序来从java中的POP3文件夹中获取消息的UID。但 uid 始终为 null。

我的代码一瞥是,

String protocol="pop3";
Properties props = new Properties();
String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
props.setProperty("mail.pop3.socketFactory.class",SSL_FACTORY);
props.setProperty("mail.pop3.socketFactory.fallback","false");
props.setProperty("mail.pop3.socketFactory.port",popPort);
props.setProperty("mail.pop3.port", popPort);
props.setProperty("mail.debug","true");

Session session = Session.getDefaultInstance(props,null);
store = session.getStore(protocol);
store.connect(popServer,Integer.parseInt(popPort),userName,passwd);
folder = ((POP3Store)store).getFolder("INBOX");
folder.open(Folder.READ_WRITE);

Message[] msgs = folder.getMessages(1,1);
String uid = ((POP3Folder)folder).getUID(msgs[0]);

此 uid 返回为 null。

我阅读了POP3Folder的getUID方法,发现POP3Store中没有UIDL支持,代码为

public synchronized String getUID(Message msg) throws MessagingException {
checkOpen();
POP3Message m = (POP3Message)msg;
try {
if (!((POP3Store)store).supportsUidl)
return null;

}

在 POP3Store 中,supportsUidl 由 getPort 方法中的协议(protocol)功能更改,

p = new Protocol(host, portNum, session.getDebug(),
session.getDebugOut(), session.getProperties(), "mail." + name,
isSSL);
capabilities = p.getCapabilities();
supportsUidl = capabilities == null|| capabilities.containsKey("UIDL");

请建议我获取 UID 的解决方案。

最佳答案

您需要使用支持 UID 的 POP3 服务器。您的 POP3 服务器似乎没有。当您查看JavaMail debug output时,服务器声称支持哪些功能?

您还可以get rid of the socket factory settings, you don't need them .

关于java - 来自 POP3Folder 的邮件的 UID 始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37416406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com