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]