3

我正在使用 Java 开发 IMAP 应用程序,我只想检索没有名称的电子邮件地址。这是我正在使用的相关代码。

Message[] msg = folder.getMessages();
for (int i = 0; i < msg.length; i++)
{
  if (!msg[i].isSet(Flag.SEEN))
  {
    EmailSenderInfo emailSenderInfo = new EmailSenderInfo();                            
    String from = InternetAddress.toString(msg[i].getFrom());
  }
}

当我打印变量“from”时,它会打印如下内容

name <emailaddress@gmail.com>

我怎样才能只得到没有名字的电子邮件地址?

4

2 回答 2

3

getFrom 方法返回一个 Address 对象数组,它实际上是 InternetAddress 对象。通常只有一个 From 地址,因此您可以只使用数组中的第一个元素。然后使用 InternetAddress.getAddress 方法:

 InternetAddress ia = (InternetAddress)msg[i].getFrom()[0];
 String from = ia.getAddress();
于 2013-04-29T06:59:32.070 回答
1

模式匹配:

import java.util.regex.Pattern;
import java.util.regex.Matcher;


Pattern pattern = Pattern.compile("<(.*?)>");
Matcher matcher = pattern.matcher("name <emailaddress@gmail.com>");

if (matcher.find())
{
    System.out.println(matcher.group(1));  // prints "emailaddress@gmail.com"
}
于 2013-04-29T00:39:49.163 回答