All pastes #472956 Raw Edit

Something

public text v1 · immutable
·published 2007-05-05 23:02 UTC
rendered paste body
package com.base.mail;


import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * EmailManager to send out mass mails. Each out going message is sent in its own thread.
 *
 * @author victori
 *
 */
public class EmailManager {
	private List<String> emails = new ArrayList();
	private String from;
	private Properties props = new Properties();
	private String body;
	private String subject;
	private String mime = "text/plain";
	private Session session;


	/**
	 * Constructor needs a SMTP server and PORT to use.
	 *
	 * @param smtp
	 * @param port
	 */
	public EmailManager(String smtp, String port) {

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

	}

	/**
	 * Send out the emails
	 *
	 */
	public void sendEmails() {
		for(String email: emails) {
			new EmailMailer(session,from,email,subject,body,mime).start();
		}
	}

	class EmailMailer extends Thread {
		private Session session;
		private String from;
		private String to;
		private String subject;
		private String body;
		private String mime;

		public EmailMailer(Session session,String from,String to,String subject, String body,String mime) {
			this.session = session;
			this.from = from;
			this.to = to;
			this.subject = subject;
			this.body = body;
			this.mime = mime;
		}

		public void run() {
			try {
				final Message msg = new MimeMessage(session);
				final Address from = new InternetAddress(this.from);
				final Address whom = new InternetAddress(this.to);
				msg.setContent(body,mime);
				msg.setFrom(from);
				msg.setRecipient(Message.RecipientType.TO, whom);
				msg.setSubject(subject);
				Transport.send(msg);
			} catch (Exception e) {
				e.printStackTrace();
				System.out.println("Issue email transportation to " + this.to);
			}
		}
	}


	/**
	 * Get sender email.
	 *
	 * @return
	 */
	public String getFrom() {
		return from;
	}


	/**
	 * Set sender email.
	 *
	 * @param from
	 */
	public void setFrom(String from) {
		this.from = from;
	}


	public Properties getProps() {
		return props;
	}


	public void setProps(Properties props) {
		this.props = props;
	}


	/**
	 * Append an email to the mass mail list.
	 *
	 * @param email
	 */
	public void appendEmail(String email) {
		emails.add(email);
	}

	/**
	 * Remove an email from the mass mail list.
	 *
	 * @param email
	 */
	public void removeEmail(String email) {
		for(int i = 0; i < emails.size(); i++) {
			if (emails.get(i).equals(email)) {
				emails.remove(i);
			}
		}
	}

	/**
	 * Get email list.
	 *
	 * @return
	 */
	public List getEmails() {
		return emails;
	}


	/**
	 * Set email list.
	 *
	 * @param emails
	 */
	public void setEmails(List emails) {
		this.emails = emails;
	}


	/**
	 * Set the content of the email.
	 *
	 * @param body
	 */
	public void setBody(String body) {
		this.body = body;
	}


	/**
	 * Get the content of the email.
	 *
	 * @return
	 */
	public String getBody() {
		return body;
	}

	/**
	 * Set the subject of the email.
	 *
	 * @param subject
	 */
	public void setSubject(String subject) {
		this.subject = subject;
	}

	/**
	 * Get the subject of the email.
	 *
	 * @return
	 */
	public String getSubject() {
		return subject;
	}

	/**
	 * Set mime type, if none set default to text/plain.
	 *
	 * @param mime
	 */
	public void setMime(String mime) {
		this.mime = mime;
	}

	/**
	 * Get the current email mimetype.
	 *
	 * @return
	 */
	public String getMime() {
		return mime;
	}
}