package br.com.ec.shared;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;
import br.com.ec.core.util.ArquivoUtil;
import br.com.ec.core.util.PropertiesUtil;
import br.com.ec.core.util.VerificadorUtil;
public class EmailComponente
{
private MimeMessage email
;
private Multipart conteudo =
new MimeMultipart
();
public EmailComponente
() {
try {
PropertiesUtil propertiesUtil =
new PropertiesUtil
("/email/email.properties");
String hostname = propertiesUtil.
retornarPropriedadeDoArquivo("email.hostname");
String porta = propertiesUtil.
retornarPropriedadeDoArquivo("email.porta");
final String emailOrigem = propertiesUtil.
retornarPropriedadeDoArquivo("email.emailorigem");
final String senha = propertiesUtil.
retornarPropriedadeDoArquivo( "email.senha");
Properties propriedades =
new Properties();
propriedades.
put("mail.smtp.host", hostname
);
propriedades.
put("mail.smtp.auth",
"true");
propriedades.
put("mail.smtp.port", porta
);
email =
new MimeMessage
(Session.
getDefaultInstance(propriedades,
new javax.
mail.
Authenticator() {
protected PasswordAuthentication getPasswordAuthentication
() {
return new PasswordAuthentication(emailOrigem, senha
);
}
}));
this.
comEmailOrigem(emailOrigem
);
} catch (Exception e
) {
e.
printStackTrace();
}
}
public EmailComponente comSessao
(Session sessao
) {
email =
new MimeMessage
(sessao
);
return this;
}
public EmailComponente comDataEnvio
(Date dataEnvio
) {
try {
email.
setSentDate(dataEnvio
);
} catch (Exception e
) {
e.
printStackTrace();
}
return this;
}
public EmailComponente comEmailOrigem
(String emailOrigem
) {
try {
email.
setFrom(new InternetAddress
(emailOrigem
));
} catch (Exception e
) {
e.
printStackTrace();
}
return this;
}
public EmailComponente comEmailDestino
(String emailDestino
) {
try {
email.
setRecipient(RecipientType.
TO,
new InternetAddress
(emailDestino
));
} catch (Exception e
) {
e.
printStackTrace();
}
return this;
}
public EmailComponente comEmailsDestino
(String emailsDestino
) {
try {
email.
setRecipients(RecipientType.
TO, InternetAddress.
parse(emailsDestino
));
} catch (Exception e
) {
e.
printStackTrace();
}
return this;
}
public EmailComponente comAssunto
(String assunto
) {
try {
email.
setSubject(assunto
);
} catch (Exception e
) {
e.
printStackTrace();
}
return this;
}
public EmailComponente comConteudo
(String corpo
) {
try {
conteudo =
null;
email.
setText(corpo
);
} catch (Exception e
) {
e.
printStackTrace();
}
return this;
}
public EmailComponente comConteudoHtml
(String corpo
) {
try {
MimeBodyPart corpoHTML =
new MimeBodyPart
();
corpoHTML.
setContent(corpo,
"text/html; charset=UTF-8");
conteudo.
addBodyPart(corpoHTML
);
} catch (Exception e
) {
e.
printStackTrace();
}
return this;
}
public EmailComponente adicionarAnexo
(String legendaArquivo,
byte[] arquivoEmBytes,
String contentTypeArquivo
) {
try {
if (VerificadorUtil.
estaNulo(conteudo
)) {
conteudo =
new MimeMultipart
();
}
ByteArrayDataSource dataSource =
new ByteArrayDataSource
(arquivoEmBytes, ArquivoUtil.
retornarContentTypeArquivo(contentTypeArquivo
));
MimeBodyPart anexo =
new MimeBodyPart
();
anexo.
setDataHandler(new DataHandler
(dataSource
));
anexo.
setFileName(legendaArquivo
);
conteudo.
addBodyPart(anexo
);
} catch (Exception e
) {
e.
printStackTrace();
}
return this;
}
public final MimeMessage build
() {
try {
if (VerificadorUtil.
naoEstaNulo(conteudo
)) {
email.
setContent(conteudo
);
}
} catch (Exception e
) {
e.
printStackTrace();
}
return email
;
}
public final void enviar
() {
try {
Message message =
new MimeMessage
(this.
build());
Transport.
send(message
);
} catch (Exception e
) {
e.
printStackTrace();
}
}
/*
private static final String NOME_PROPRIEDADE_EMAIL_EMAILORIGEM = "email.emailorigem";
private static final String NOME_PROPRIEDADE_EMAIL_SENHA = "email.senha";
private static final String NOME_PROPRIEDADE_EMAIL_USUARIO = "email.usuario";
private static final String NOME_PROPRIEDADE_EMAIL_PORTA = "email.porta";
private static final String NOME_PROPRIEDADE_EMAIL_HOSTNAME = "email.hostname";
private static final String NOME_ARQUIVO_EMAIL_PROPERTY = "/email/email.properties";
private String assunto;
private String conteudo;
private String destinatarios;
private String nomeArquivo;
private byte[] arquivoAnexo;
private String contentTypeAnexo;
private static final String EMAIL_FROM = "sistema@espacocase.net";
private static final String EMAIL_PASS = "espaco10";
public String getAssunto() {return assunto;}
public void setAssunto(String assunto) {this.assunto = assunto;}
public String getConteudo() {return conteudo;}
public void setConteudo(String conteudo) {this.conteudo = conteudo;}
public String getDestinatarios() {return destinatarios;}
public void setDestinatarios(String destinatarios) {this.destinatarios = destinatarios;}
public String getNomeArquivo() {return nomeArquivo;}
public void setNomeArquivo(String nomeArquivo) {this.nomeArquivo = nomeArquivo;}
public byte[] getArquivoAnexo() {return arquivoAnexo;}
public void setArquivoAnexo(byte[] arquivoAnexo) {this.arquivoAnexo = arquivoAnexo;}
public String getContentTypeAnexo() {return contentTypeAnexo;}
public void setContentTypeAnexo(String contentTypeAnexo) {this.contentTypeAnexo = contentTypeAnexo;}
private Session configurandoEmail() {
try {
PropertiesUtil propertiesUtil = new PropertiesUtil(NOME_ARQUIVO_EMAIL_PROPERTY);
String hostname = propertiesUtil.retornarPropriedadeDoArquivo(NOME_PROPRIEDADE_EMAIL_HOSTNAME);
String porta = propertiesUtil.retornarPropriedadeDoArquivo(NOME_PROPRIEDADE_EMAIL_PORTA);
final String emailOrigem = propertiesUtil.retornarPropriedadeDoArquivo(NOME_PROPRIEDADE_EMAIL_EMAILORIGEM);
final String senha = propertiesUtil.retornarPropriedadeDoArquivo( NOME_PROPRIEDADE_EMAIL_SENHA);
Properties props = new Properties();
props.put("mail.smtp.host", hostname);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", porta);
System.out.println(emailOrigem + "s");
System.out.println(emailOrigem.equals(EMAIL_FROM));
System.out.println(senha.equals(EMAIL_PASS));
Session sessao = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(emailOrigem, senha);
}
});
// sessao.setDebug(true);
return sessao;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public void enviarEmail() {
try {
PropertiesUtil propertiesUtil = new PropertiesUtil(NOME_ARQUIVO_EMAIL_PROPERTY);
String emailOrigem = propertiesUtil.retornarPropriedadeDoArquivo(NOME_PROPRIEDADE_EMAIL_EMAILORIGEM);
Message message = new MimeMessage(configurandoEmail());
message.setFrom(new InternetAddress(emailOrigem));
Address[] emailsParaEnvio = InternetAddress.parse(destinatarios);
message.setRecipients(Message.RecipientType.TO, emailsParaEnvio);
message.setSubject(getAssunto());
message.setText(getConteudo());
if (VerificadorUtil.naoEstaNuloOuVazio(getArquivoAnexo())) {
Multipart conteudo = new MimeMultipart();
ByteArrayDataSource dataSource = new ByteArrayDataSource(getArquivoAnexo(), ArquivoUtil.retornarContentTypeArquivo(getContentTypeAnexo()));
MimeBodyPart anexo = new MimeBodyPart();
anexo.setDataHandler(new DataHandler(dataSource));
anexo.setFileName(getNomeArquivo());
conteudo.addBodyPart(anexo);
message.setContent(conteudo);
}
Transport.send(message);
} catch (MessagingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
*/
/*
public static void main(String[] args) {
Properties props = new Properties();
props.put("mail.smtp.host", "mail.espacocase.net");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "587");
Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("sistema@espacocase.net", "espaco10");
}
});
session.setDebug(true);
try {
//Remetente
Message message = new MimeMessage(session);
// message.setFrom(new InternetAddress("espacocase@gmail.com"));
message.setFrom(new InternetAddress("sistema@espacocase.net"));
//Destinatário(s)
Address[] toUser = InternetAddress.parse(ConstantesSEC.DESTINATARIOS_EMAIL_DIRECAO);
message.setRecipients(Message.RecipientType.TO, toUser);
message.setSubject("ESPAÇO CASE - CONSOLIDAÇÃO DO DIA 12/05/2015");//Assunto
message.setText("CONSOLIDAÇÃO DO DIA 12/05/2015:\n\nValor bruto: R$13.045,00\nMeta: -R$16.750,00\nPendências: 1\n\nVendas do dia: R$1.600,00.\nLoja Poço: R$600,00.\nLoja Quiosque: R$1.000,00");
// message.setSubject("ESPAÇO CASE E VOCÊ");//Assunto
// message.setText("OLÃ {Cliente}, chegaram novidades para o seu aparelho. Acesse: www.espacocase.com.br e confira!");
Transport.send(message);
System.out.println("Feito!!!");
} catch (MessagingException e) {
e.printStackTrace();
}
}
*/
}