Печать значений переменных в Java - PullRequest
1 голос
/ 25 февраля 2011

У меня есть объект, который является новым MimeMessage, называемый message, и я хочу выяснить, что он передает на мой сервер исходящей почты. Я, однако, понятия не имею, как можно получить такую ​​переменную, как это распечатано в Java. Вот некоторый код:

private String sendConfirmationEmail (String to, String from, String subject, String body, boolean CCSender) {
      try
      {
  //            String smtpHost = Properties.smtp;
          String smtpHost = Properties.smtp;      
          String fromAddress = from;
          String toAddress = to;

          Properties properties = System.getProperties();
          properties.put("mail.smtp.host", smtpHost);

          Session session = Session.getInstance(properties, null);

          MimeMessage message = new MimeMessage(session);

          message.setFrom(new InternetAddress(fromAddress));
          message.setRecipient(Message.RecipientType.TO,
                  new InternetAddress(toAddress));

          if (CCSender) {
            message.setRecipient(Message.RecipientType.CC,
                    new InternetAddress(from));
          }
          message.setSubject(subject);
          message.setText(body);

          System.out.println(message); <=== I want this to work!

          message.saveChanges();
          Transport.send(message);
          return "1:success";
      }
      catch(Exception e)
      {
          return "0:failure "+e.toString();
      }
  }

Любая помощь будет высоко ценится.

Спасибо.

Ответы [ 3 ]

6 голосов
/ 25 февраля 2011

Если это класс, которым вы управляете, вы переопределяете его метод toString ()

Если у вас нет контроля над ним, вам придется написать метод, подобный

String valueOf(Message message) {
    StringBuilder sb = new StringBuilder();
    sb.append(message.someValue());
    sb.append(message.someOtherValue());
    return sb.toString();
}

и используйте valueOf в вашем отладочном сообщении

Для MimeMessage я бы положился на то, что у него есть реализация toString для его содержимого

String valueOf(Message message) {
    return message.getContent().toString();
}
0 голосов
/ 25 февраля 2011

Вы можете создать класс декоратора, реализующий базовый интерфейс, и регистрировать / распечатывать все, что возвращается упакованным классом 'toString() (или любыми другими методами, которые имеет базовый интерфейс).

0 голосов
/ 25 февраля 2011

Для MimeMessage вы можете позвонить message.writeTo(System.out);. Возможно, вы захотите сделать это после вызова message.saveChanges() для обеспечения согласованности.

...