我正在尝试使用JAVA MAIL API处理邮件。我想检查来自来自特定电子邮件ID的电子邮件,所以我正在检查:
for(int i=0;i<messages.length;i++)
{
if(messages[i].getFrom().toString().equalsIgnoreCase("seller-notification@amazon.com"))
{
System.out.println(messages[i].getContent());
Multipart mp = (Multipart)messages[i].getContent();
Object Body = mp.getBodyPart(i).getContent();
String Content = Body.toString();
}
}
调试模式屏幕,我可以在调试中看到来自的值:
以上条件未成真。
答案 0 :(得分:1)
这是因为它不是字符串,而是您要尝试比较Object
的{{1}}方法和toString()
。由于此String
不会返回您想要的内容,因此您必须将其转换为toString
并从那里获取电子邮件。
尝试:
Address
答案 1 :(得分:0)
问题是toString生成&#34; [卖方通知]&#34;,这不等于&#34; seller-notification@amazon.com"。
您应该转换为InternetAddress(以防万一),提取电子邮件并查看电子邮件。
答案 2 :(得分:0)
.getFrom()方法返回Address数据类型对象的数组。首先,您必须选择一个数组元素并将其转换为InternetAddress数据类型。请参阅以下代码
if(((InternetAddress)(messages[i].getFrom()[0])).getAddress().equalsIgnoreCase("seller-notification@amazon.com"))
{
//your remaining code
}
如果它能解决您的问题,请将此标记为答案
答案 3 :(得分:0)
messages [i] .getFrom()。toString()**只给出字节值..) - 你需要使用这一行转换为字符串
InternetAddress.toString(messages[i].getFrom());