package mireka.filter.misc; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import mireka.MailData; import mireka.filter.RecipientContext; import mireka.filter.StatelessFilterType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class SavePostmasterMail extends StatelessFilterType { private final Logger logger = LoggerFactory .getLogger(SavePostmasterMail.class); private File dir; @Override public void dataRecipient(MailData data, RecipientContext recipientContext) { if (!recipientContext.recipient.isPostmaster()) return; OutputStream out = null; try { File destFile = File.createTempFile("mail", ".txt", dir); out = new FileOutputStream(destFile); InputStream in = data.getInputStream(); byte[] buffer = new byte[8192]; int numRead; while ((numRead = in.read(buffer)) > 0) { out.write(buffer, 0, numRead); } } catch (IOException e) { logger.error("Mail cannot be saved", e); } finally { if (out != null) { try { out.close(); } catch (IOException e) { logger.warn("Mail content file cannot be closed", e); } } } } /** * @x.category GETSET */ public void setDir(String dir) { this.dir = new File(dir); } }