java internetaddress.parse_java – 从InternetAddress打印出发件人的电子邮件地址

本文展示了一段使用JavaMail API从Gmail IMAP连接中提取发件人电子邮件地址的代码。尽管代码能正确显示邮件主题,但发件人地址以内存地址而非实际邮箱的形式显示。解决方案是通过调用InternetAddress.toString()将发件人对象转换为字符串。

这是提取发件人和电子邮件主题的代码.使用此代码,我看到正确的主题显示,但我看到不同格式的发件人的地址.

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值