Problemas com Javamail

Pessoal, estou com alguns probleminhas com conversão de tipos no javamail. Tenho que receber os e-mails e salvá-los em um arquivo-texto. Porém, eu até consigo gravar e-mails em texto simples, mas ele não grava os e-mails em HTML(Mime). Alguém sabe como posso resolver isso? segue abaixo o código(beeeeeeeeeeeeeeeeeeem sujo).

O erro é o seguinte:

Exception in thread “main” java.lang.ClassCastException: java.lang.String cannot be cast to javax.mail.internet.MimeMultipart
at DisplayMail.main(DisplayMail.java:54)

na linha 54. Se alguém puder me ajudar, fico muito grato!

Valeu!

[code]
import java.util.Enumeration;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.mail.;
import javax.mail.internet.
;
import java.io.*;
import java.util.GregorianCalendar;
import java.lang.String;

public class DisplayMail {

public static void main(String[] args) {
String host = “pop3.servidor_de_email.com.br”;

try{
Properties props = new Properties();

FileWriter fileWriter = new FileWriter(“mail.txt”);

PrintWriter writer = new PrintWriter(fileWriter);

GregorianCalendar date = new GregorianCalendar();

String dia = date.getTime().toString();

//repassa as informações de autenticação
props.put(“mail.pop3.host”,host);

// cria um objeto de autenticação
Authenticator auth = new MyAuthenticator();

// estabelece sessão e passa a autenticação como argumento
Session session = Session.getDefaultInstance(props, auth);
Store store = session.getStore(“pop3”);

// não passe nenhum argumento para o método de conexão!
store.connect();
Folder folder = store.getFolder(“INBOX”);
folder.open(Folder.READ_WRITE);

Message messages[] = folder.getMessages();
//exibe a quantidade de mensagens
int tamanho = messages.length;
System.out.println("\nMensagens não lidas:" + tamanho+"\r\n");
fileWriter.write("\r\n" + dia + " - " + “\r\nMensagens não lidas:” + tamanho + “\r\n”);

//vai lendo as mensagens e separando remetente,assunto, data de envio e a mensagem em si.
for (int i = 0; i < messages.length; i++) {
MimeMultipart multi = new MimeMultipart();

multi = (MimeMultipart) messages[i].getContent();

fileWriter.write("" + dia + " - " + “\r\n” + i + ": " + “\r\n”+“From: " +
messages[i].getFrom()[0] + “\r\n” + “\r\n” + “Subject: " +
messages[i].getSubject() + “\r\n” +”\r\n”+"Sent Date: " +
messages[i].getSentDate()+ “\r\n” +
"Message: " + multi.getBodyPart(1).getContent().toString() + “\r\n” + “---------------------------------------------------------” + “\r\n”);

System.out.println("" + dia + " - " + i + ": " + messages[i].getFrom()[0] + “\t” +
messages[i].getSubject() + “\t” + messages[i].getSentDate() + “\n\n”);
messages[i].writeTo(System.out);

}
fileWriter.close();

folder.close(true);

store.close();

}
catch (MessagingException me) {
System.err.println(me.getMessage());
}
catch (IOException ioe) {
System.err.println(ioe.getMessage());
}
}
}
class MyAuthenticator extends Authenticator {
public PasswordAuthentication getPasswordAuthentication() {
String username = null ;
//System.out.println(“User:”+username);
String password = null;
try {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

System.out.print("Username: ");
username = in.readLine();

System.out.print("Password: ");

password = in.readLine();
System.out.print("\n");
}
catch (IOException ioe) {
System.err.println(ioe.getMessage());
}
return new PasswordAuthentication(username,password);
}

}[/code]

colega as vezes lendo o erro fica bem fácil de identificar, este é seu caso.

veja seu erro como mencionou:

[quote] Exception in thread “main” java.lang.ClassCastException: java.lang.String cannot be cast to javax.mail.internet.MimeMultipart
at DisplayMail.main(DisplayMail.java:54) [/quote]
A JVM está te dizendo o seguinte,na linha 54 não é possível fazer o Cast que vc está tentando fazer :

 multi = (MimeMultipart) messages[i].getContent();  

não é possivel fazer Cast de java.lang.String para javax.mail.internet.MimeMultipart;

não mexi com a API JavaMail especificamente, foi com outra de email, portanto verifique na documentação dela o porque disso…ok…mas o erro eh esse…

[quote=Javabuntu]colega as vezes lendo o erro fica bem fácil de identificar, este é seu caso.

veja seu erro como mencionou:

[quote] Exception in thread “main” java.lang.ClassCastException: java.lang.String cannot be cast to javax.mail.internet.MimeMultipart
at DisplayMail.main(DisplayMail.java:54) [/quote]
A JVM está te dizendo o seguinte,na linha 54 não é possível fazer o Cast que vc está tentando fazer :

 multi = (MimeMultipart) messages[i].getContent();  

não é possivel fazer Cast de java.lang.String para javax.mail.internet.MimeMultipart;

não mexi com a API JavaMail especificamente, foi com outra de email, portanto verifique na documentação dela o porque disso…ok…mas o erro eh esse…

[/quote]

Isso eu sei, cara. Eu queria saber se alguém tem alguma idéia, alguma sugestão do que fazer.

clique Aqui e veja como você pode fazer. :lol:

se não quer ajudar, por favor não atrapalhe. :evil:

Cara eu sei que este post é bem antigo, mas no site da sun os caras convertem para Multipart:

Multipart mp = (Multipart)message.getContent();

for (int i=0, n=multipart.getCount(); i<n; i++) {
  Part part = multipart.getBodyPart(i));

  String disposition = part.getDisposition();

  if ((disposition != null) && 
      ((disposition.equals(Part.ATTACHMENT) || 
       (disposition.equals(Part.INLINE))) {
    saveFile(part.getFileName(), part.getInputStream());
  }
}

agradeça mais reclame menos, segui o link do cara acima.