J'ai codé un programme Java pour obtenir l'UID d'un message de POP3folder dans Java. mais l'uid est toujours nul.UID d'un message de POP3Folder est toujours NULL
Glimpse de mon code est,
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]);
ce uid est retourné comme nulle.
J'ai lu la méthode getuid du POP3Folder et a constaté que le soutien UIDL ne sont pas disponibles dans le POP3Store, le code est
public synchronized String getUID(Message msg) throws MessagingException {
checkOpen();
POP3Message m = (POP3Message)msg;
try {
if (!((POP3Store)store).supportsUidl)
return null;
}
Dans POP3Store supportsUidl est modifié par les capacités du Protocal dans la méthode getPort ,
p = new Protocol(host, portNum, session.getDebug(),
session.getDebugOut(), session.getProperties(), "mail." + name,
isSSL);
capabilities = p.getCapabilities();
supportsUidl = capabilities == null|| capabilities.containsKey("UIDL");
S'il vous plaît me suggérer la solution pour obtenir UID.
Après l'impression est de débogage je suis arrivé, en utilisant javaxmail 1.5.7 DEBUG POP3: mail.pop3.disabletop: false DEBUG POP3: mail.pop3.apop.enable: false DEBUG POP3: mail.pop3.disablecapa : false DEBUG POP3: connexion à l'hôte "pop.zoho.com", port 995, isSSL false + OK POP3 mx.zohomail.com serveur v1.0 prêt <[email protected]> CAPA + OK USER . DEBUG POP3: serveur ne prend pas en charge TOP, désactiver DEBUG POP3: trace de commande d'authentification supprimé DEBUG POP3: commande d'authentification a réussi C: NOOP S: + OK UID est nulle –
La mise en forme de la sortie de débogage est sorte de foiré dans votre commentaire, il est préférable si vous éditez votre question et l'ajouter là. Il n'y a pas JavaMail 1.5.7 donc je ne sais pas quelle version vous utilisez vraiment; les versions récentes incluent le numéro de version dans la sortie de débogage. En outre, la sortie de débogage "C:" et "S:" provient d'une très ancienne version de JavaMail. Il devrait être sur chaque ligne de la sortie du protocole, donc je ne sais pas ce qui se passe là-bas. Pourtant, d'après ce que je peux voir, il est assez clair que le serveur ne supporte pas les UID, et JavaMail ne peut rien y faire. –
Vous devriez vraiment vous assurer d'avoir une version récente et cohérente de JavaMail. Vous utilisez peut-être une très ancienne version. –