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

Java 使用log4j.smtpAppender发送电子邮件附件,java,log4j,Java,Log4j,我可以使用log4j.smtpAppender触发带有附件(日志文件)的电子邮件吗 我目前正在使用这个appender来触发错误和致命级别异常的电子邮件。我可以将日志文件添加到与附件相同的电子邮件中吗 log4j.appender.email=org.apache.log4j.net.SMTPAppender 我认为你不能在同一封电子邮件中发送日志文件。当然,您可以配置几个appender来记录您的数据:例如一个发送电子邮件(SMTPAppender),另一个打印到stdout(Console

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

我目前正在使用这个appender来触发错误和致命级别异常的电子邮件。我可以将日志文件添加到与附件相同的电子邮件中吗

log4j.appender.email=org.apache.log4j.net.SMTPAppender

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

此外,我认为在同一封电子邮件中附加日志文件不是一个好主意:每次发送新电子邮件时,日志文件都会不断增长,假设您的日志长度约为5MB……那么日志记录将消耗您大量的处理能力

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 );

}

来源:

不完全是日志文件。但是另一个文件是100KB。我发现javaMail是满足我需求的更好的解决方案