package br.com.centralit.citcorpore.integracao;
import java.net.URI;
import java.util.ArrayList;
import java.util.Properties;
import javax.mail.Flags;
import javax.mail.Flags.Flag;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.search.FlagTerm;
import microsoft.exchange.webservices.data.EmailMessage;
import microsoft.exchange.webservices.data.EmailMessageSchema;
import microsoft.exchange.webservices.data.ExchangeCredentials;
import microsoft.exchange.webservices.data.ExchangeService;
import microsoft.exchange.webservices.data.ExchangeVersion;
import microsoft.exchange.webservices.data.FindItemsResults;
import microsoft.exchange.webservices.data.Item;
import microsoft.exchange.webservices.data.ItemView;
import microsoft.exchange.webservices.data.SearchFilter;
import microsoft.exchange.webservices.data.WebCredentials;
import microsoft.exchange.webservices.data.WellKnownFolderName;
import br.com.centralit.citcorpore.util.Enumerados;
import br.com.centralit.citcorpore.util.ParametroUtil;
import br.com.citframework.excecao.LogicException;
import com.sun.mail.imap.IMAPFolder;
/**
* @author breno.guimaraes
*/
public class ClienteEmailCentralServicoDao {
//Microsoft Exchange
public ArrayList<Item> getMails() throws MessagingException, LogicException {
FindItemsResults<Item> results = null;
EmailMessage email = null;
String protocolo = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.SMTP_LEITURA_Provider, "");
try {
String SMTP_LEITURA_Caixa = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.SMTP_LEITURA_Caixa,"");
String SMTP_LEITURA_Senha = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.SMTP_LEITURA_Senha,"");
String SMTP_LEITURA_Servidor = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.SMTP_LEITURA_Servidor,"");
ExchangeService service = new
ExchangeService(ExchangeVersion.Exchange2007_SP1);
// Provide Crendentials
ExchangeCredentials credentials = new
WebCredentials(SMTP_LEITURA_Caixa,SMTP_LEITURA_Senha);
service.setCredentials(credentials);
// Set Exchange WebSevice URL
service.setUrl(new URI("https://"+SMTP_LEITURA_Servidor +"/ews/exchange.asmx"));
//Seta a quantidade padr�o de emails listados
String LIMITE =ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.SMTP_LEITURA_LIMITE_,"");
Integer limiteEmails = (LIMITE.trim().equalsIgnoreCase("") ? 30 : Integer.valueOf(LIMITE.trim()));
SearchFilter itemFilter = new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false);
//service.FindItems(WellKnownFolderName.Inbox, itemFilter, view);
// Get five items from mail box
ItemView view = new ItemView(limiteEmails);
results = service.findItems(WellKnownFolderName.Inbox, itemFilter, view);
// emails in inbox
return results.getItems();
} catch (Exception e) {
e.printStackTrace();
}
if(results != null){
return results.getItems();
} else {
return null;
}
}
//JavaMail
public Message[] getEmail2s()throws MessagingException, LogicException{
try {
Properties pop = new Properties();
String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
pop.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
pop.setProperty("mail.pop3.socketFactory.fallback", "true");
pop.setProperty("mail.pop3.port", ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.SMTP_LEITURA_Porta,""));
pop.setProperty("mail.pop3.socketFactory.port", ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.SMTP_LEITURA_Porta,""));
pop.setProperty("mail.store.protocol", "pop");
pop.setProperty("mail.smtp.host", "smtp.gmail.com");
Session session = Session.getDefaultInstance(System.getProperties(), null);
String SMTP_LEITURA_Servidor = "imap.gmail.com";
String SMTP_LEITURA_Caixa = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.SMTP_LEITURA_Caixa,"");
String SMTP_LEITURA_Senha = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.SMTP_LEITURA_Senha,"");
Store store = session.getStore("imaps");
store.connect(SMTP_LEITURA_Servidor, SMTP_LEITURA_Caixa,SMTP_LEITURA_Senha);
System.out.println(store);
Folder inbox = (IMAPFolder) store.getFolder("Inbox");
inbox.open(Folder.READ_WRITE);
Message mensagens[];
mensagens = inbox.search(new FlagTerm(new Flags(Flag.SEEN), false));
return mensagens;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}