我正在尝试使用POP3 JavaMail包来获取电子邮件。基于JavaMail文档,IMAPFolder和POP3Folder都有getUID()方法。但是,代码适用于IMAP,但不适用于POP3。使用POP3,我收到以下错误:undefined method ``getUID' for #<Java::ComSunMailPop3::POP3Message:0x66d7cba7>
。
以下是代码:
server_messages = mbox.selectedfolder.getMessages()
msgs_to_be_fetched = Array.new
fetchprofile = javax.mail.FetchProfile.new()
fetchprofile.add(javax.mail.UIDFolder::FetchProfileItem::UID)
fetchprofile.add(javax.mail.FetchProfile::Item::FLAGS)
mbox.selectedfolder.fetch(server_messages, fetchprofile)
server_messages.each { |server_msg|
next if server_msg.getFlags().contains(javax.mail.Flags::Flag::DELETED)
uid = server_msg.getUID()
msgs_to_be_fetched << server_msg unless msg_exists(uid)
} unless server_messages.nil?
答案 0 :(得分:0)
我已经解决了这个问题。使用IMAP我可以调用message.getUID()但是使用POP3我必须使用该文件夹。代码如下:
def getMessageUID(serverType,folder,msg)
return (serverType == 'imap'? msg.getUID() : folder.getUID(msg))
end