我有一个对象是一个新的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();
}
}
非常感谢任何帮助。
感谢。
答案 0 :(得分:6)
如果它是您可以控制的类,则覆盖它的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();
}
答案 1 :(得分:0)
对于MimeMessage
,您可以致电message.writeTo(System.out);
。在调用message.saveChanges()
以确保一致性之后,您可能希望这样做。
答案 2 :(得分:0)
您可以创建一个实现基本接口的装饰器类,并记录/打印由包装类“toString()
(或基本接口具有的任何其他方法)返回的所有内容。”