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

标签 java jakarta-mail

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

}

Debug模式屏幕,我可以在调试中看到值位于from中:

enter image description here

上述条件未成立。

最佳答案

这是因为它不是字符串,并且您正在尝试比较 ObjecttoString() 方法和 String。由于此 toString 不会返回您想要的内容,因此您必须将其转换为 Address 并从那里获取电子邮件。

尝试:

Address[] froms = messages[i].getFrom();
String email = froms == null ? null : ((InternetAddress) froms[0]).getAddress();
if("seller-notification@amazon.com".equalsIgnoreCase(email))
{//Your work}

关于java - 即使条件包含指定数据,条件也会变为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34690839/

相关文章:

java - 无法使用 Jedis Lib 在本地连接到 aws 上的 Elasticache 集群

java - Android JavaMail 检测服务器是否离线

java - css 样式在 javax 邮件 api 中不起作用

java - 未使用 mail.smtp.from 设置返回路径

java - JMeter Selenium 插件 Kernel32 异常

java - 用子类替换 Spring Bean 时出错

java - 将 List<String> 中的分隔字符串转换为 List<String>

java - 移动 switch 语句以使用 Enum

Javamail API 异常 - 需要身份验证

java - com.sun.mail.smtp.SMTPSendFailedException : 550 Access denied - Invalid HELO name (See RFC2821 4. 1.1.1)