All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jlot.mailing.config.MailboxConsolePrinter Maven / Gradle / Ivy

There is a newer version: 1.2
Show newest version
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.annotation.PreDestroy;
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;
	private transient volatile boolean	active		= true;

	@PostConstruct
	public void init ( )
	{
		start();
	}

	@Override
	@PreDestroy
	public void destroy ( )
	{
		active = false;
	}

	@Override
	public void run ( )
	{
		while (active)
		{
			boolean waitForIncomingEmail = greenMail.waitForIncomingEmail(3000, 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