使用log4j.smtpAppender发送电子邮件附件

时间:2011-11-24 03:11:28

标签: java log4j

我可以使用log4j.smtpAppender触发带附件(日志文件)的电子邮件。

我目前正在使用此附加程序来触发错误和致命级别异常的电子邮件。我可以在与附件

相同的电子邮件中添加日志文件
log4j.appender.email=org.apache.log4j.net.SMTPAppender

2 个答案:

答案 0 :(得分:1)

我认为您无法在同一封电子邮件中发送日志文件。您当然可以配置多个appender来记录您的数据:例如,发送电子邮件(SMTPAppender),其他打印到stdout(ConsoleAppender)等。

此外,我认为将日志文件附加到同一封电子邮件不是一个好主意:每次发送新电子邮件时日志文件都会不断增长,并假设您的日志长度约为5MB ...然后伐木会给你带来很大的处理能力。

答案 1 :(得分:1)

public static void emailAttachment
              throws AddressException, MessagingException{

  String host = mail.company.com;
  String from = user@company.com;
  String to = user2@company.com;
  String cc = user3@company.com;

  Properties props = System.getProperties();

  props.put("mail.smtp.host", host);
  Session session = Session.getInstance(props, null);

  MimeMessage message = new MimeMessage(session);
  message.setFrom(new InternetAddress(from));
  message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
  message.addRecipient(Message.RecipientType.CC, new InternetAddress(cc));

  message.setSubject("Email Notification");
  MimeBodyPart messageBodyPart = new MimeBodyPart();

  messageBodyPart.setText("email Body");

  Multipart multipart = new MimeMultipart();
  multipart.addBodyPart(messageBodyPart);
  messageBodyPart = new MimeBodyPart();
  DataSource source = new FileDataSource(fileAttachment);
  messageBodyPart.setDataHandler(new DataHandler(source));
  messageBodyPart.setFileName("attachment.pdf");
  multipart.addBodyPart(messageBodyPart);

  message.setContent(multipart);

  Transport.send( message );

}

来源:jGuru.com