这是提取发件人和电子邮件主题的代码.使用此代码,我看到正确的主题显示,但我看到不同格式的发件人的地址.
Properties props = new Properties();
props.put("mail.imap.host" , "imap.gmail.com" );
props.put("mail.imap.user" , "username");
// User SSL
props.put("mail.imap.socketFactory" , 993);
props.put("mail.imap.socketFactory.class" , "javax.net.ssl.SSLSocketFactory" );
props.put("mail.imap.port" , 993 );
Session session = Session.getDefaultInstance(props , new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("username" , "password");
}
});
try {
Store store = session.getStore("imap");
store.connect("imap.gmail.com" , "username" , "password");
Folder fldr = store.getFolder("Inbox");
fldr.open(Folder.READ_ONLY);
Message msgs[] = fldr.getMessages();
for(int i = 0 ; i < msgs.length ; i++) {
System.out.println(msgs[i].getFrom() + "
}
} catch(Exception exc) {
}
}
输出是:
[Ljavax.mail.internet.InternetAddress;@1462851
[Ljavax.mail.internet.InternetAddress;@bdab91
[Ljavax.mail.internet.InternetAddress;@4ac00c
[Ljavax.mail.internet.InternetAddress;@1865b28
它的形式是什么?(@ 1462851)
我想要发送者的电子邮件地址而不是@ 1462851.我可以这样做吗?
解决方法:
getForm()返回一个对象.要将其打印为纯字符串,请在System.out中尝试InternetAddress.toString(msgs [i] .getFrom()).
标签:java,gmail,javamail,gmail-imap
来源: https://codeday.me/bug/20190721/1495570.html
本文展示了一段使用JavaMail API从Gmail IMAP连接中提取发件人电子邮件地址的代码。尽管代码能正确显示邮件主题,但发件人地址以内存地址而非实际邮箱的形式显示。解决方案是通过调用InternetAddress.toString()将发件人对象转换为字符串。
339

被折叠的 条评论
为什么被折叠?



