// Path: src/main/java/com/github/marcelothebuilder/webpedidos/util/mail/config/MailerConfig.java
// public interface MailerConfig {
// 
// 	Properties getProperties();
// 
// 	String getUsuario();
// 
// 	String getRemetente();
// 
// 	String getSenha();
// 
// }
// 
// Path: src/main/java/com/github/marcelothebuilder/webpedidos/util/mail/impl/MailTemplateVelocity.java
// public final class MailTemplateVelocity implements MailTemplate {
// 	private String htmlContent;
// 
// 	public MailTemplateVelocity(Mail mail) throws ResourceNotFoundException {
// 		String arquivoTemplate = mail.getTemplate();
// 
// 		VelocityEngine engine = new VelocityEngine();
// 		engine.addProperty("resource.loader", "class");
// 		engine.addProperty("class.resource.loader.class",
// 				"org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
// 		engine.init();
// 
// 		Template template = engine.getTemplate(arquivoTemplate);
// 
// 		NumberTool numberTool = new NumberTool();
// 
// 		assert (numberTool != null);
// 		
// 		VelocityContext context = new VelocityContext(mail.getParametros());
// 		context.put("numberTool", numberTool);
// 		context.put("locale", Locale.getDefault());
// 
// 		StringWriter writer = new StringWriter();
// 
// 		template.merge(context, writer);
// 
// 		htmlContent = writer.toString();
// 	}
// 
// 	/*
// 	 * (non-Javadoc)
// 	 * 
// 	 * @see
// 	 * com.github.marcelothebuilder.webpedidos.util.mail.MailTemplate#getHtml()
// 	 */
// 	@Override
// 	public String getHtml() {
// 		return this.htmlContent;
// 	}
// 
// }


import java.io.Serializable;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.github.marcelothebuilder.webpedidos.util.mail.config.MailerConfig;
import com.github.marcelothebuilder.webpedidos.util.mail.impl.MailTemplateVelocity;
/**
 * 
 */
package com.github.marcelothebuilder.webpedidos.util.mail;




/**
 * @author Marcelo Paixao Resende
 *
 */

@RequestScoped
public class Mailer implements Serializable {
	private static final long serialVersionUID = 1L;

	@Inject
	private MailerConfig config;

	private Session criarSession() {
		Session session = Session.getDefaultInstance(getConfig().getProperties(), new Authenticator() {
			@Override
			protected PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication(getConfig().getUsuario(), getConfig().getSenha());
			}
		});
		
		session.setDebug(true);

// Path: src/main/java/com/github/marcelothebuilder/webpedidos/util/mail/config/MailerConfig.java
// public interface MailerConfig {
// 
// 	Properties getProperties();
// 
// 	String getUsuario();
// 
// 	String getRemetente();
// 
// 	String getSenha();
// 
// }
// 
// Path: src/main/java/com/github/marcelothebuilder/webpedidos/util/mail/impl/MailTemplateVelocity.java
// public final class MailTemplateVelocity implements MailTemplate {
// 	private String htmlContent;
// 
// 	public MailTemplateVelocity(Mail mail) throws ResourceNotFoundException {
// 		String arquivoTemplate = mail.getTemplate();
// 
// 		VelocityEngine engine = new VelocityEngine();
// 		engine.addProperty("resource.loader", "class");
// 		engine.addProperty("class.resource.loader.class",
// 				"org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
// 		engine.init();
// 
// 		Template template = engine.getTemplate(arquivoTemplate);
// 
// 		NumberTool numberTool = new NumberTool();
// 
// 		assert (numberTool != null);
// 		
// 		VelocityContext context = new VelocityContext(mail.getParametros());
// 		context.put("numberTool", numberTool);
// 		context.put("locale", Locale.getDefault());
// 
// 		StringWriter writer = new StringWriter();
// 
// 		template.merge(context, writer);
// 
// 		htmlContent = writer.toString();
// 	}
// 
// 	/*
// 	 * (non-Javadoc)
// 	 * 
// 	 * @see
// 	 * com.github.marcelothebuilder.webpedidos.util.mail.MailTemplate#getHtml()
// 	 */
// 	@Override
// 	public String getHtml() {
// 		return this.htmlContent;
// 	}
// 
// }


// Path: src/main/java/com/github/marcelothebuilder/webpedidos/util/mail/Mailer.java
import java.io.Serializable;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.github.marcelothebuilder.webpedidos.util.mail.config.MailerConfig;
import com.github.marcelothebuilder.webpedidos.util.mail.impl.MailTemplateVelocity;

/**
 * 
 */
package com.github.marcelothebuilder.webpedidos.util.mail;




/**
 * @author Marcelo Paixao Resende
 *
 */

@RequestScoped
public class Mailer implements Serializable {
	private static final long serialVersionUID = 1L;

	@Inject
	private MailerConfig config;

	private Session criarSession() {
		Session session = Session.getDefaultInstance(getConfig().getProperties(), new Authenticator() {
			@Override
			protected PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication(getConfig().getUsuario(), getConfig().getSenha());
			}
		});
		
		session.setDebug(true);

		return session;