
org.jlot.mailing.config.MailboxConsolePrinter Maven / Gradle / Ivy
package org.jlot.mailing.config;
import java.io.File;
import java.io.FileOutputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.mail.BodyPart;
import javax.mail.Multipart;
import javax.mail.internet.MimeMessage;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;
import com.icegreen.greenmail.util.GreenMail;
import com.icegreen.greenmail.util.GreenMailUtil;
@Component
@Profile({ "development", "integration" })
public class MailboxConsolePrinter extends Thread
{
@Inject
private GreenMail greenMail;
private int mailIndex = 0;
@PostConstruct
public void init ( )
{
start();
}
@Override
public void run ( )
{
while (true)
{
boolean waitForIncomingEmail = greenMail.waitForIncomingEmail(60000, mailIndex + 1);
if (waitForIncomingEmail)
{
MimeMessage[] receivedMessages = greenMail.getReceivedMessages();
for (; mailIndex < receivedMessages.length; mailIndex++)
{
MimeMessage mimeMessage = receivedMessages[mailIndex];
try
{
printMsg(mimeMessage);
String filename = writeToFile(mimeMessage);
System.out.println(String.format("Mail wurde in Datei %s abgelegt", filename));
}
catch (Exception e)
{
throw new RuntimeException(e);
}
}
}
}
}
private String writeToFile ( MimeMessage mimeMessage ) throws Exception
{
DateFormat df = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
String nowAsISO = df.format(new Date());
String filename = String.format("target/mail-%s-%s.eml", nowAsISO, mimeMessage.hashCode());
mimeMessage.writeTo(new FileOutputStream(new File(filename)));
return filename;
}
private void printMsg ( MimeMessage mimeMessage ) throws Exception
{
System.out.println("--------------------------------------------------------------------------");
System.out.println("-- Mail Nr. " + mailIndex);
System.out.println("--------------------------------------------------------------------------");
System.out.println(GreenMailUtil.getHeaders(mimeMessage));
System.out.println();
Object content = mimeMessage.getContent();
if (content instanceof String)
{
System.out.println(content);
}
else if (content instanceof Multipart)
{
Multipart mp = (Multipart) content;
handleMultipart(mp);
}
System.out.println("--------------------------------------------------------------------------");
}
public void handleMultipart ( Multipart mp ) throws Exception
{
int count = mp.getCount();
for (int i = 0; i < count; i++)
{
BodyPart bp = mp.getBodyPart(i);
Object content = bp.getContent();
if (content instanceof String)
{
System.out.println(content);
}
else if (content instanceof Multipart)
{
handleMultipart((Multipart) content);
}
else
{
System.out.println("Ein Anhang der Mail wird hier nicht angezeigt. Bitte in der E-Mail Datei im Ordner target/ nachsehen");
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy