我的Java方法不能将JavaMail变量用作参数

时间:2015-01-16 20:40:04

标签: java string variables javamail

我正在用Java创建一个程序,以便在用户收到有关密码重置的电子邮件时提醒用户。我已经发送了一封电子邮件,上面写着“您的密码已被重置”,并创建了一种分析电子邮件的方法:

    private static boolean passwordResetFinder(String email) {
    boolean passReset = false;

    if (email.matches(".*password.*") && (email.matches(".*changed.*") || email.matches(".*reset.*"))) {
        passReset = true;
    }

我打电话给这样的方法:

String email = new String();
...
open connection to inbox using JavaMail
...

Object content = emailReader.getContent();
email = content.toString();

if(passwordResetFinder(email)) {
   System.out.println("Password Alert");
}

这不起作用。但是,如果我提出以下内容:

if (passwordResetFinder("Your password has been reset")

email = content.toString();    
email = "Your password has been reset";    
    if(passwordResetFinder(email))

它有效。这是为什么?

1 个答案:

答案 0 :(得分:0)

也许emailReader.getContent()返回的Object的toString()没有给出邮件包含的文本的字符串表示。如果它在阅读时是Multipart的子类,则可能就是这种情况 如果消息类型未知,则为多部分邮件或流。

  

将内容作为Java对象返回。返回对象的类型当然取决于内容本身。例如,为" text / plain"返回的对象content通常是一个String对象。为" multipart"返回的对象content始终是Multipart子类。对于DataHandler系统未知的内容类型,输入流将作为内容返回

     

https://javamail.java.net/nonav/docs/api/javax/mail/Part.html#getContent%28%29