Javamal - IMAP visualizando e-mails enviados

9 respostas
rockstorm

Gostaria de saber como faço para acessar uma determinada pasta no meu servidor de e-mail…hoje eu estou enviando e-mail de uma aplicação e gostaria de poder visualizar os e-mails enviados…
Estou estudando o protocolo IMAP e acho que ele faz esta função…estou correto??

9 Respostas

danieldestro

Também procuro a mesma coisa, mas não achei nada a respeito ainda.

rockstorm

Bom, hoje eu já ler um e-mail de uma determinada pasta. Mas meu problema é o seguinte.
Quando eu envio um e-mail, automaticamente uma copia precisaria ir para a pasta de “Emails Enviados”. Só que isso não acontece.
Quando eu envio pelo webmail a copia é colocada na pasta, mas quando faço isso pela aplicação, o e-mail não vai para a pasta de “Enviados”

danieldestro

Fez isso via IMAP?
Não tem como copiar a mensagem via a api?

rockstorm

Sim eu fiz via IMAP.
Sobre copiar a mensagem foi uma ideia que tive mas parei na seguinte questão:
Copiar de onde para onde??
Sendo que quando eu envio o e-mail eu não tenho o e-mail arquivado em lugar algum…como irei fazer uma copia deste e-mail enviado e coloca-lo em uma determidada pasta…???
Este é o meu problema…rss

danieldestro

Consegui, BARALHOOOO!!!

Então, fiz um teste que funcionou.

Session session = Session.getDefaultInstance(mailConfigProperties, null);
Store store = session.getStore("imap");
store.connect(host, user, pass);
Folder folder = store.getDefaultFolder();

// cria uma MSG e atribui os valores
Message msg = new SMTPMessage(session);
msg.setContent(message, MailContentType.HTML.getType());
msg.setSentDate(new Date());
msg.setSubject(subject);
msg.setText(message);
msg.saveChanges();

// grava a msg no INBOX
folder = folder.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
folder.appendMessages(new Message[] { msg });
folder.close(true);
rockstorm

opa…
Voce acredita que dê para ao invés de salvar na INBOX ele salvar na SENT???

Qualdo vc esta salvando a mensagem, vc tb esta enviando a mesma certo???

danieldestro

Este cara apenas salva na caixa, mas não envio… O envio eu faço via SMTP mesmo (omiti o código).
Se você souber o nome, pode gravar em qualquer caixa de e-mail.

rockstorm

Funcionou!!! Consegui enviar e salvar na pasta de “Enviadas…”

Valeu!!

luisbizzan

Bom dia cara,

Deixa eu ti perguntar, vcs conseguiram enviar e-mail via MS Exchange passando autenticação de usuario e senha? Eu tenho uma classe utilizando javax.mail mas não consigo enviar quando o e-mail passa autenticação, ele não me gera mensagem de erro porem não envia a mensagem. Aqui na empresa que eu trabalho nos filtramos essas mensagem e percebemos que eu só consigo enviar a mensagem quando é para o mesmo domínio. E tambem percebi que o cabeçario do e-mail esta bem diferente do enviado pelo Exchange, será que estou fazendo algo errado? Olha minha classe abaixo.

public void enviar() throws Exception{
        Properties props = System.getProperties();
        props.put("mail.smtp.host", (Global.isEmpty(SMTPServer) ? "localhost" : SMTPServer));
        
        javax.mail.Session session = null;

        if (!Global.isEmpty(usuario) && !Global.isEmpty(senha)){
            props.put("mail.smtp.auth", "true");
            javax.mail.Authenticator auth = auth = new javax.mail.Authenticator() {
                @Override
                public javax.mail.PasswordAuthentication getPasswordAuthentication() {
                    return new javax.mail.PasswordAuthentication(usuario, senha);
                }
            };
            session = javax.mail.Session.getInstance(props, auth);
        }
        else{
            props.put("mail.smtp.auth", "false");
            session = javax.mail.Session.getDefaultInstance(props);
        }
        
        javax.mail.Message message = new javax.mail.internet.MimeMessage(session);
        javax.mail.internet.InternetAddress iaFrom = new javax.mail.internet.InternetAddress(from);
        javax.mail.internet.InternetAddress iaTo[] = javax.mail.internet.InternetAddress.parse(to);
        
        message.setFrom(iaFrom);
        message.setRecipients(javax.mail.Message.RecipientType.TO,iaTo);
        message.setSubject(subject);
        message.setSentDate(new java.util.Date());

        //Define uma mensagem de varias partes
        Multipart multipart = new MimeMultipart();
        //define o corpo da mensagem
        MimeBodyPart messageBodyPart = new MimeBodyPart();
        //define o texto da mensagem
        messageBodyPart.setText(text);
        //insere o corpo da mensagem
        multipart.addBodyPart(messageBodyPart);

        if (!Global.isEmpty(arquivo)){
            String arqs [] = arquivo.split(";");
            for(int i=0;i<arqs.length;i++){
               if(arqs[i].length() != 0){
                  //define o arquivo a ser anexado
                  messageBodyPart = new MimeBodyPart();
                  DataSource source = new FileDataSource(arqs[i]);
                  messageBodyPart.setDataHandler(new DataHandler(source));
                  messageBodyPart.setFileName(arqs[i]);
                  //insere o arquivo anexado
                  multipart.addBodyPart(messageBodyPart);
               }
            }
        }
        
        //message.setContent(multipart, (Global.isEmpty(content) ? "text/plain" : content));
        message.setContent(multipart);
        javax.mail.Transport.send(message);
    }

Se alguem souber agradeço a ajuda !!! >

Criado 25 de outubro de 2007
Ultima resposta 8 de nov. de 2011
Respostas 9
Participantes 3