Java 邮件不要 return 主题
Java mail don't return subject
我正在使用 javamail 来挽救收件箱中的邮件。我从收件箱收到所有邮件,但主题 (message.getSubject()) return null.
我在多个站点进行了研究,但所有提出的解决方案均无效。
此问题仅在 Tomcat6 中出现,如果在 java 项目中为主要方法执行偶数代码,我将获得所有属性,包括主题。我是 SSL 协议 (pop3s) 用户。
感谢帮助
public void getMails(final String host, final int port, final String user, final String password){
final Session session = Session.getInstance(System.getProperties(), null);
final Store store = session.getStore("pop3s");
store.connect(host, port, user, password);
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_WRITE);
int count = inbox.getMessageCount();
System.out.println(" Count Emails "+count);
final Message[] messages = inbox.getMessages();
for (final Message message : messages) {
//This return null
System.out.print("mail subject: " + message.getSubject() + " send at: " + message.getSentDate());
//This return body of mail
System.out.print("mail subject: " + message.getContent().toString());
}
My output for the method Main directly on eclipse:
消息数: 4
全名:收件箱
NewMessageCount: 0
获取描述: 空
获取文件名: 空值
getMessageNumber: 1
getSize:2297
getSentDate: 8 月 3 日星期一 17:23:10 BRT 2015
来自:西尔瓦诺·沃伊恰克 silvano.wojczak@softexpertjlle.onmicrosoft.com
内容: javax.mail.internet.MimeMultipart@6769ba97
内容getClass: class javax.mail.internet.MimeMultipart
For log4j in TomCat6:
消息数: 4
全名:收件箱
NewMessageCount: 0
获取描述: 空
获取文件名: 空值
getMessageNumber: 1
getSize:6731
getSentDate: 空
来自: 空
内容: javax.mail.internet.MimeMultipart@6769ba97
内容getClass: class javax.mail.internet.MimeMultipart
在我看来,您安装的 Tomcat 6 的运行时有自己的 JavaMail 实现。
您最好首先确保您实际使用的是哪个 JavaMail 实现。在错误发生之前立即在读取邮件的同一程序中执行此剪贴画:
String packageName="javax.mail.internet.";
String simpleClassName="MimeMultipart";
String className=packageName+simpleClassName;
Class<?> cl=Class.forName(className);
URL url=cl.getResource(simpleClassName+".class");
System.out.println("url="+url);
一旦我在使用 geronimo-mail
的旧实现时遇到此类问题,我必须在阅读 [=23= 之前通过 克隆 消息来解决它们]:
private static MimeMessage cloneMimeMessage(Session session, MimeMessage src)
throws MessagingException
{
if (src instanceof POP3Message)
{
return new MimeMessage(session, ((POP3Message)src).top(Integer.MAX_VALUE));
}
else if (src instanceof IMAPMessage)
{
return new MimeMessage(session, ((IMAPMessage)src).getRawInputStream());
}
else
{
throw new UnsupportedOperationException();
}
}
我正在使用 javamail 来挽救收件箱中的邮件。我从收件箱收到所有邮件,但主题 (message.getSubject()) return null.
我在多个站点进行了研究,但所有提出的解决方案均无效。
此问题仅在 Tomcat6 中出现,如果在 java 项目中为主要方法执行偶数代码,我将获得所有属性,包括主题。我是 SSL 协议 (pop3s) 用户。
感谢帮助
public void getMails(final String host, final int port, final String user, final String password){
final Session session = Session.getInstance(System.getProperties(), null);
final Store store = session.getStore("pop3s");
store.connect(host, port, user, password);
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_WRITE);
int count = inbox.getMessageCount();
System.out.println(" Count Emails "+count);
final Message[] messages = inbox.getMessages();
for (final Message message : messages) {
//This return null
System.out.print("mail subject: " + message.getSubject() + " send at: " + message.getSentDate());
//This return body of mail
System.out.print("mail subject: " + message.getContent().toString());
}
My output for the method Main directly on eclipse:
消息数: 4
全名:收件箱
NewMessageCount: 0
获取描述: 空
获取文件名: 空值
getMessageNumber: 1
getSize:2297
getSentDate: 8 月 3 日星期一 17:23:10 BRT 2015
来自:西尔瓦诺·沃伊恰克 silvano.wojczak@softexpertjlle.onmicrosoft.com
内容: javax.mail.internet.MimeMultipart@6769ba97
内容getClass: class javax.mail.internet.MimeMultipart
For log4j in TomCat6:
消息数: 4
全名:收件箱
NewMessageCount: 0
获取描述: 空
获取文件名: 空值
getMessageNumber: 1
getSize:6731
getSentDate: 空
来自: 空
内容: javax.mail.internet.MimeMultipart@6769ba97
内容getClass: class javax.mail.internet.MimeMultipart
在我看来,您安装的 Tomcat 6 的运行时有自己的 JavaMail 实现。
您最好首先确保您实际使用的是哪个 JavaMail 实现。在错误发生之前立即在读取邮件的同一程序中执行此剪贴画:
String packageName="javax.mail.internet.";
String simpleClassName="MimeMultipart";
String className=packageName+simpleClassName;
Class<?> cl=Class.forName(className);
URL url=cl.getResource(simpleClassName+".class");
System.out.println("url="+url);
一旦我在使用 geronimo-mail
的旧实现时遇到此类问题,我必须在阅读 [=23= 之前通过 克隆 消息来解决它们]:
private static MimeMessage cloneMimeMessage(Session session, MimeMessage src)
throws MessagingException
{
if (src instanceof POP3Message)
{
return new MimeMessage(session, ((POP3Message)src).top(Integer.MAX_VALUE));
}
else if (src instanceof IMAPMessage)
{
return new MimeMessage(session, ((IMAPMessage)src).getRawInputStream());
}
else
{
throw new UnsupportedOperationException();
}
}