java mail 接收邮件,为什么 subject 为 null

I_am_a_java_CaiNiao 2015-06-24 09:57:45
如题,使用 java mail,读取邮箱收件箱的邮件,能读出正确的邮件数目来,也能读到 content,但 getSubject() 却返回 null,事实是邮件确实是有 subject 的,中英文都不行。还有 getFrom() 也是 null,代码如下,请指教,谢谢!


public class MailReceiverTest {

public static void main(String[] args) throws Exception {

String pop3Server = "mail.xxxxxx.com";
String protocol = "pop3";
String user = "xxx@xxxxxx.com";
String pwd = "xxxxxx";

Properties props = new Properties();
props.setProperty("mail.store.protocol", protocol);
props.setProperty("mail.pop3.host", pop3Server);

Session session = Session.getInstance(props);
session.setDebug(true);

Store store = session.getStore();
store.connect(pop3Server, user, pwd);

Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);

try {
Message [] messages = folder.getMessages();

// 此处 mailCounts 数量为 2,与我收件箱中一致,正确
int mailCounts = messages.length;
for(int i = 0; i < mailCounts; i++) {

String subject = messages[i].getSubject(); // subject 为 null,为何 ?
String from = (messages[i].getFrom()[0]).toString();

System.out.println("第 " + (i+1) + "封邮件的主题:" + subject);
System.out.println("第 " + (i+1) + "封邮件的发件人地址:" + from);
}
} finally {
folder.close(false);
store.close();
}
}
}
...全文
416 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Java碎碎念 2015-06-24
  • 打赏
  • 举报
回复
刚执行了代码,可以取到主题,楼主换个邮箱服务器试试。
  • 打赏
  • 举报
回复
引用 1 楼 baohuan_love 的回复:
再好好看看代码,是不是主题没有设置上啊
这是收邮件啊,需要设置主题吗?不明白
  • 打赏
  • 举报
回复
再好好看看代码,是不是主题没有设置上啊
  • 打赏
  • 举报
回复
找到原因了,我项目中还用到了 axis2,axis2的 jar 包与 javamail 有冲突,把 axis2 的jar 包全去掉就正常了。 不过现在问题是我确实需要 axis2,不行就分两个项目了,唉。。。
  • 打赏
  • 举报
回复
以下是调试日志:

Loading javamail.default.providers from jar:file:/C:/Users/tianxiang/.m2/repository/javax/mail/mail/1.4.7/mail-1.4.7.jar!/META-INF/javamail.default.providers
DEBUG: loading new provider protocol=imap, className=com.sun.mail.imap.IMAPStore, vendor=Oracle, version=null
DEBUG: loading new provider protocol=imaps, className=com.sun.mail.imap.IMAPSSLStore, vendor=Oracle, version=null
DEBUG: loading new provider protocol=smtp, className=com.sun.mail.smtp.SMTPTransport, vendor=Oracle, version=null
DEBUG: loading new provider protocol=smtps, className=com.sun.mail.smtp.SMTPSSLTransport, vendor=Oracle, version=null
DEBUG: loading new provider protocol=pop3, className=com.sun.mail.pop3.POP3Store, vendor=Oracle, version=null
DEBUG: loading new provider protocol=pop3s, className=com.sun.mail.pop3.POP3SSLStore, vendor=Oracle, version=null
DEBUG: getProvider() returning provider protocol=pop3; type=javax.mail.Provider$Type@a54f742; class=com.sun.mail.pop3.POP3Store; vendor=Oracle
DEBUG POP3: mail.pop3.rsetbeforequit: false
DEBUG POP3: mail.pop3.disabletop: false
DEBUG POP3: mail.pop3.forgettopheaders: false
DEBUG POP3: mail.pop3.cachewriteto: false
DEBUG POP3: mail.pop3.filecache.enable: false
DEBUG POP3: mail.pop3.keepmessagecontent: false
DEBUG POP3: mail.pop3.starttls.enable: false
DEBUG POP3: mail.pop3.starttls.required: false
DEBUG POP3: mail.pop3.apop.enable: false
DEBUG POP3: mail.pop3.disablecapa: false
DEBUG POP3: connecting to host "mail.sinotrans-mingzhou.com", port 110, isSSL false
+OK sinotrans-mingzhou.com POP3 MDaemon 14.0.3 ready <MDAEMON-F201506241428.AA2816603MD4765@sinotrans-mingzhou.com>
CAPA
+OK Capability list follows
TOP
USER
UIDL
.
DEBUG POP3: authentication command trace suppressed
DEBUG POP3: authentication command succeeded
STAT
+OK 0 0
QUIT
+OK stx@sinotrans-mingzhou.com sinotrans-mingzhou.com POP3 Server signing off (mailbox empty)

  • 打赏
  • 举报
回复
引用 5 楼 benpao412 的回复:
JavaMail version 1.4.7
换了好几个邮箱,都是老问题。 获取的其他属性(From, To, Date...)也都是null,除了 getContent 是有内容的。
Java碎碎念 2015-06-24
  • 打赏
  • 举报
回复
JavaMail version 1.4.7
  • 打赏
  • 举报
回复
引用 3 楼 benpao412 的回复:
刚执行了代码,可以取到主题,楼主换个邮箱服务器试试。
我换了 qq 邮箱,还是不行。你用的 jar 包是什么版本的?我的是: <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency>

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧