即使条件包含指定数据,条件也会变为 false
Condition gets false even if it contains specified data
我正在尝试使用 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();
}
}
调试模式屏幕,我可以在调试中看到 from 中的值:
以上条件不成立。
这是因为它不是字符串,而您正在尝试比较 Object
的 toString()
方法和 String
。由于此 toString
不会 return 您想要的,您必须将其转换为 Address
并从那里获取电子邮件。
尝试:
Address[] froms = messages[i].getFrom();
String email = froms == null ? null : ((InternetAddress) froms[0]).getAddress();
if("seller-notification@amazon.com".equalsIgnoreCase(email))
{//Your work}
问题是 toString 生成“[Seller Notification]”,这不等于 "seller-notification@amazon.com"。
您应该转换到 InternetAddress(以防万一之前检查),提取电子邮件并检查电子邮件。
.getFrom() 方法 returns Address 数据类型对象数组。因此,首先您必须 select 数组元素之一并将其转换为 InternetAddress 数据类型。见下方代码
if(((InternetAddress)(messages[i].getFrom()[0])).getAddress().equalsIgnoreCase("seller-notification@amazon.com"))
{
//your remaining code
}
如果解决了您的问题,请标记为答案
messages[i].getFrom().toString()** 仅提供字节值..)-您需要使用此行转换为字符串
InternetAddress.toString(messages[i].getFrom());
我正在尝试使用 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();
}
}
调试模式屏幕,我可以在调试中看到 from 中的值:
以上条件不成立。
这是因为它不是字符串,而您正在尝试比较 Object
的 toString()
方法和 String
。由于此 toString
不会 return 您想要的,您必须将其转换为 Address
并从那里获取电子邮件。
尝试:
Address[] froms = messages[i].getFrom();
String email = froms == null ? null : ((InternetAddress) froms[0]).getAddress();
if("seller-notification@amazon.com".equalsIgnoreCase(email))
{//Your work}
问题是 toString 生成“[Seller Notification]”,这不等于 "seller-notification@amazon.com"。
您应该转换到 InternetAddress(以防万一之前检查),提取电子邮件并检查电子邮件。
.getFrom() 方法 returns Address 数据类型对象数组。因此,首先您必须 select 数组元素之一并将其转换为 InternetAddress 数据类型。见下方代码
if(((InternetAddress)(messages[i].getFrom()[0])).getAddress().equalsIgnoreCase("seller-notification@amazon.com"))
{
//your remaining code
}
如果解决了您的问题,请标记为答案
messages[i].getFrom().toString()** 仅提供字节值..)-您需要使用此行转换为字符串
InternetAddress.toString(messages[i].getFrom());