即使条件包含指定的数据,条件也会变为false

时间:2016-01-09 07:21:10

标签: java javamail

我正在尝试使用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();
       }

}

调试模式屏幕,我可以在调试中看到来自的值:

enter image description here

以上条件未成真。

4 个答案:

答案 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());