【问题标题】:Printing out the email address of sender from InternetAddress从 InternetAddress 打印发件人的电子邮件地址
【发布时间】:2011-10-11 23:54:58
【问题描述】:

这是获取电子邮件的sendersubject 的代码。通过此代码,我看到显示了正确的主题,但我看到了不同格式的发件人地址。

Properties props = new Properties();
    props.put("mail.imap.host" , "imap.gmail.com" );
    props.put("mail.imap.user" , "username");
    // User SSL
    props.put("mail.imap.socketFactory" , 993);
    props.put("mail.imap.socketFactory.class" , "javax.net.ssl.SSLSocketFactory" );
    props.put("mail.imap.port" , 993 );
    Session session = Session.getDefaultInstance(props , new Authenticator() {
        @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication("username" , "password");
        }
    });

    try {
      Store store = session.getStore("imap");
      store.connect("imap.gmail.com" , "username" , "password");
      Folder fldr = store.getFolder("Inbox");
      fldr.open(Folder.READ_ONLY);
      Message msgs[] = fldr.getMessages();
        for(int i = 0 ; i < msgs.length ; i++) {
            System.out.println(msgs[i].getFrom() + "<-- FROM" + " " + msgs[i].getSubject() + "<---Subject");
        }
    } catch(Exception exc) {

    }
}

输出是:

[Ljavax.mail.internet.InternetAddress;@1462851<-- FROMGet Gmail on your mobile phone<---Subject
[Ljavax.mail.internet.InternetAddress;@bdab91<-- FROMImport your contacts and old email<---Subject
[Ljavax.mail.internet.InternetAddress;@4ac00c<-- FROMCustomize Gmail with colors and themes<---Subject
[Ljavax.mail.internet.InternetAddress;@1865b28<-- FROMtester<---Subject

它是什么形式?(@1462851) 我希望显示发件人的电子邮件地址而不是 @1462851。我该怎么做?

【问题讨论】:

    标签: java gmail jakarta-mail gmail-imap


    【解决方案1】:

    getForm() 返回一个对象。要将其打印为纯字符串,请在您的System.out 中尝试InternetAddress.toString(msgs[i].getFrom())

    【讨论】:

      【解决方案2】:

      这是因为你只是打印出InternetAddress 实例,它没有toString() 方法。然后它默认为Object.toString(),主要用于查看对象是否不同。

      考虑明确选择您希望在打印语句中看到的字段。

      【讨论】:

        【解决方案3】:

        您应该使用msgs[i].getFrom().getAddress()。你看到的是InternetAddress对象(类名+哈希码)的toString结果

        【讨论】:

        • 执行此操作时出错。它说找不到符号方法getAddress()
        • 这很奇怪,无意冒犯,但请确保您没有错字。你能展示那部分代码吗?
        • 嗨!对我来说,它也给出错误。似乎这已被弃用!
        【解决方案4】:

        我花了好几分钟才找到这个简单的代码:

        System.out.println("received from "+((InternetAddress)((Address)(message.getFrom()[0]))).getAddress());

        【讨论】:

          猜你喜欢
          • 2015-06-27
          • 2016-01-21
          • 1970-01-01
          • 2017-07-21
          • 2012-05-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多