Estou tentando acessar um determinado e-mail configurando-o com o padrão IMAP e está dando o seguinte erro.
java.net.UnknownHostException: pop.labsoft.com.br
Segue a minha Classe Constante
packagebr.com.mylims.auxiliares;publicclassConstantes{publicstaticfinalStringPASTA_XML="\\data\\data\\br.com.mylims\\files\\";//pasta onde o XML será salvo em seu computadorpublicstaticfinalStringIMAP="imap";publicstaticfinalStringHOST="pop.labsoft.com.br";//Seu host; publicstaticfinalintPORTA=587;//Sua porta; publicstaticfinalStringARQUIVO_MSG="coleta1.xml";//Arquivo de mensagens do seu e-mail; publicstaticfinalStringLOGIN="[email removido]";//Seu login; publicstaticfinalStringSENHA="minhasenha";//Sua senha; publicstaticfinalStringPASTA_PRINCIPAL="Inbox";publicstaticfinalStringPASTA_BACKUP="";//pasta caso você queira copiar os e-mails da principal como fiz; }
Carinha, não sei bem o que você está tentando fazer, porque a única coisa que você está mostrando aqui são as constantes utilizadas e como se configura um servidor num celular android.
Pontos suspeitos:
O protocolo que você está querendo utilizar está correto? O servidor que está utilizando , suspeitosamente chamado de “pop”.labsoft.com.br suporta IMAP?
Você está especificando corretamente, quando se utiliza de suas Constantes, a chamada a este servidor?
Em resumo: mostre o código da chamada ao servidor de e-mail, e não sua classe de constantes, porque ela não significa nada.
F
Fabiano_Almeida
Fala irmão,
Valeu pela força
Seguem as classes.
packagebr.com.mylims.auxiliares;importjava.io.BufferedReader;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.util.Properties;importjavax.mail.AuthenticationFailedException;importjavax.mail.Flags;importjavax.mail.Folder;importjavax.mail.FolderClosedException;importjavax.mail.FolderNotFoundException;importjavax.mail.Message;importjavax.mail.MessagingException;importjavax.mail.Multipart;importjavax.mail.NoSuchProviderException;importjavax.mail.Part;importjavax.mail.ReadOnlyFolderException;importjavax.mail.Session;importjavax.mail.Store;importjavax.mail.StoreClosedException;importjavax.mail.URLName;importjavax.mail.internet.InternetAddress;importandroid.app.Activity;importandroid.util.Log;publicclassReadEmailsextendsActivity{privateStorestore=null;privateFolderfolder=null;privateMessagemessage=null;privateMessage[]messages=null;privateObjectmsgObj=null;privateStringsender=null;@SuppressWarnings("unused")privateStringsubject=null;privateMultipartmultipart=null;privatePartpart=null;privateStringcontentType=null;privatestaticfinalStringCATEGORIA="coleta";publicReadEmails()throwsMessagingException{processMail();}/** * Processa o e-mail * @throws MessagingException * */publicbooleanprocessMail()throwsMessagingException{store=conexaoServidorEMail();folder=getPastaCaixaEntrada(store);messages=folder.getMessages();try{for(intmessageNumber=0;messageNumber<messages.length;messageNumber++){message=messages[messageNumber];msgObj=message.getContent();// Determine o tipo de emailif(msgObjinstanceofMultipart){subject=message.getSubject();multipart=(Multipart)message.getContent();for(inti=0;i<multipart.getCount();i++){part=multipart.getBodyPart(i);// pegando um tipo do conteúdocontentType=part.getContentType();StringfileName2=part.getFileName();if(fileName2!=null){System.out.println(messageNumber+" "+fileName2+" | "+message.getSubject());}fileName2=null;// Tela do conteúdoif(contentType.startsWith("text/plain")){}else{StringfileName=part.getFileName();@SuppressWarnings("unused")Message[]mensagensXML=separaMensagensXML(i,fileName);}}}else{sender=((InternetAddress)message.getFrom()[0]).getPersonal();if(sender==null){sender=((InternetAddress)message.getFrom()[0]).getAddress();}// Get the subject informationsubject=message.getSubject();}}// Fecha a pastafolder.close(true);// Histório de mensagensstore.close();System.out.println("Terminado");returntrue;}catch(AuthenticationFailedExceptione){store.close();//e.printStackTrace();Log.i(CATEGORIA,"AUT"+e);returnfalse;}catch(FolderClosedExceptione){store.close();e.printStackTrace();returnfalse;}catch(FolderNotFoundExceptione){store.close();e.printStackTrace();returnfalse;}catch(NoSuchProviderExceptione){store.close();e.printStackTrace();returnfalse;}catch(ReadOnlyFolderExceptione){store.close();e.printStackTrace();returnfalse;}catch(StoreClosedExceptione){store.close();e.printStackTrace();returnfalse;}catch(Exceptione){Log.i(CATEGORIA,"MENSAGEM"+e);store.close();//e.printStackTrace();returnfalse;}}/** * @param i * @param fileName * @return * @throws MessagingException * @throws IOException */privateMessage[]separaMensagensXML(inti,StringfileName)throwsMessagingException,IOException{Message[]mensagensXML=folder.getMessages();;if(fileName!=null){inttamanhoString=fileName.length()-3;for(inta=0;a<messages.length;a++){if(fileName.substring(tamanhoString).equals("xml")){mensagensXML[a]=message;}}}// Recebendo o nome do arquivo@SuppressWarnings("unused")StringfileName2=validarXML(part,store,folder,mensagensXML,i);returnmensagensXML;}/** * @param messages * @param i * @throws MessagingException */privatevoidexcluirMensagemInbox(Message[]messages,inti)throwsMessagingException{@SuppressWarnings("unused")BufferedReaderreader=newBufferedReader(newInputStreamReader(System.in));messages[i].setFlag(Flags.Flag.DELETED,true);}/** * Envia os arquivos da pasta principal para a pasta reserva * * @param store * @param folder * @param messages * @throws MessagingException */privatebooleanenviaArquivoPastaAuxiliar(Storestore,Folderfolder,Message[]messages,inti)throwsMessagingException{FolderfolderAux;folderAux=getPastaAuxiliar(store);folder.copyMessages(messages,folderAux);folderAux.close(true);excluirMensagemInbox(messages,i);returnfalse;}/** * Recebe o anexo e valida se é um XML, se sim ele salva o arquivo em uma * pasta * * @param part * @return * @throws MessagingException * @throws IOException */privateStringvalidarXML(Partpart,Storestore,Folderfolder,Message[]messages,inti)throwsMessagingException,IOException{StringfileName=part.getFileName();if(fileName!=null){inttamanhoString=fileName.length()-3;if(!fileName.substring(tamanhoString).equals("xml")){returnfileName;}else{Stringdisposition=part.getDisposition();if((disposition!=null)&&((disposition.equals(Part.ATTACHMENT)||(disposition.equals(Part.INLINE))))){salvarArquivo(part);enviaArquivoPastaAuxiliar(store,folder,messages,i);}}}returnfileName;}/** * Salva o arquivo em uma pasta * * @param part * @throws MessagingException * @throws IOException */privatevoidsalvarArquivo(Partpart)throwsIOException,MessagingException{FileOutputStreamfileOutputStream=newFileOutputStream(Constantes.PASTA_XML+part.getFileName());Objectobj=part.getContent();if(objinstanceofInputStream){InputStreamis=(InputStream)obj;intch=-1;while((ch=is.read())!=-1){fileOutputStream.write(ch);}}}/** * Acessa a Caixa de Entrada (Inbox) * * @param store * @return * @throws MessagingException */privateFoldergetPastaCaixaEntrada(Storestore)throwsMessagingException{Folderfolder;folder=store.getFolder(Constantes.PASTA_PRINCIPAL);folder.open(Folder.READ_WRITE);returnfolder;}/** * Acessa a Pasta Auxiliar * * @param store * @return * @throws MessagingException */privateFoldergetPastaAuxiliar(Storestore)throwsMessagingException{Folderfolder;folder=store.getFolder(Constantes.PASTA_BACKUP);folder.open(Folder.READ_WRITE);returnfolder;}/** * Autenticação e conexão com o Servidor de e-mail * * @return * @throws NoSuchProviderException * @throws MessagingException */privateStoreconexaoServidorEMail()throwsNoSuchProviderException,MessagingException{Sessionsession;Storestore;Propertiesprop=newProperties();session=Session.getInstance(prop);URLNameurl=newURLName(Constantes.IMAP,Constantes.HOST,Constantes.PORTA,Constantes.ARQUIVO_MSG,Constantes.LOGIN,Constantes.SENHA);store=session.getStore(url);store.connect();returnstore;}}
Chamada do método na ação do botão.
publicvoidonClick(Viewv){// TODO Auto-generated method stubtry{ReadEmailsreadMail=newReadEmails();if(readMail.processMail()){Log.i(CATEGORIA,"ok");}else{Log.i(CATEGORIA,"correto");}}catch(MessagingExceptione){// TODO Auto-generated catch blockLog.i(CATEGORIA,"errado: "+e);}}});
F
Fabiano_Almeida
Alterei as portas para 143 e 997 e dão o mesmo erro
Eduardo_Bregaida
No caso não são as portas o problema, o erro é que ele não está achando o host.
Pode ser algum problema de permissão no AndroidManifest?
F
Fabiano_Almeida
Olá furutani,
Testei pelo IP e não foi.
F
Fabiano_Almeida
A parte de acesso aos e-mails eu consegui.
Tem que colocar a permissão de internet no maldito AndroidManifest.
Agora falta a parte de baixar os anexos.
Alguém já fez isto para android?
Att
pix
Aqui está dando quase tudo certo, um problema que tenho encontrado e não consigo solucionar é que existem vários arquivos que são baixados com tamanho ZERO
Será que é do servidor de email?
Daniel Mafinski Biz
F
Fabiano_Almeida
Cara, caso esteja usando o nome troque pelo IP.
pix
Tentei trocar pelo IP e ainda continua vindo xml zerados, será que pode ser problema no servidor de email?