繁体   English   中英

用Java打印变量值

[英]Printing variable values in Java

我有一个对象,它是一个名为MessaMessage的新MimeMessage,我想知道它传递给我的传出邮件服务器的内容。 但是我不知道如何在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();
      }
  }

任何帮助将非常感激。

谢谢。

如果它是您可以控制的类,则覆盖它的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();
}

对于MimeMessage ,可以调用message.writeTo(System.out); MimeMessage 您可能希望在调用message.saveChanges()之后执行此操作以确保一致性。

您可以创建一个装饰器类来实现基本接口,并记录/打印包装类的toString()返回的所有内容(或基本接口具有的任何其他方法)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM