[RESOLVIDO] Enviar/Receber Email Android - Api JavaMail

Fala rapaziada,

Problemas para receber/enviar email na minha app em android estou usando a api JavaMail.
São duas classes separadas uma para enviar e outra para receber que instancio em eventos em dois botões na minha main.

O erro é que não encontrou as classes da api JavaMai,l detalhe, os jars estão no projeto, alguém já passou por isso?

O que pode estar acontecendo?

ps: Em um projeto Java ambas funcionam perfeitamente.

Att.
Leandrooooo

Como você está tentando enviar? Você sabe que não é possível executar operações de rede pela Thread principal? (Você precisa usar uma AsyncTask pra isso.)

Até então ainda não utilizei thread ou AsyncTask. Apenas um metodo que chamo no onClick do botão.

Apenas testes para verificar se envio ou recebo email, depois ia estar melhorando o código e tratando as exceções.

Estou fazendo errado? tenho que utlizar uma AsyncTask?

[quote=leandrooooo]Até então ainda não utilizei thread ou AsyncTask. Apenas um metodo que chamo no onClick do botão.

Apenas testes para verificar se envio ou recebo email, depois ia estar melhorando o código e tratando as exceções.

Estou fazendo errado? tenho que utlizar uma AsyncTask?[/quote]

Você precisa usar uma AsyncTask. O Android não permite operações de rede na Thread principal do app.

Sugiro que dê uma olhada na documentação:

https://developer.android.com/reference/android/os/AsyncTask.html

Ataxexe, entendi e tentei fazer mais não está dando certo.
Na Activity criar a classe enviarEmail que extends AsyncTask e no metodo doInBackground estou executando a classe que enviar o e-mail, mais esta acontecendo erros. Vou postar a classe que envia e-mail e o LogCat. Se puder, me ajudar! Obrigado.

[code]
public class EnviaEmails{

public void enviarEmailPedidosAberto() {
	try{
		String user = "teste@terra.com.br";
		String pass = "teste";
		String dest = "teste1@terra.com.br.com";

		Properties props = System.getProperties();
		props.put("mail.smtp.auth", "true");
		
		Authenticator auth = new Autenticador(user,pass);
		
		Session session = Session.getDefaultInstance(props, auth);
		MimeMessage msg = new MimeMessage(session);
		msg.setFrom(new InternetAddress(user));
		msg.setRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress(dest));
		msg.setSentDate(new Date());
		msg.setSubject("EMAIL ANDROID");
		MimeBodyPart textPart = new MimeBodyPart();
		textPart.setContent("TESTE ENVIO EMAIL", "text/html");
		Multipart mp = new MimeMultipart();
		mp.addBodyPart(textPart);
		msg.setContent(mp);
		msg.saveChanges();
		Transport transport = session.getTransport("smtp");
		transport.connect("smtp.terra.com.br", 587, user, pass);
		transport.sendMessage(msg, msg.getAllRecipients());
		transport.close();

	}catch(Exception e){
		e.printStackTrace();
	}
}

public class Autenticador extends Authenticator{
	
	private String user;
	private String password;

	public Autenticador(String user, String password){
		this.user = user;
		this.password = password;
	}
	
	protected PasswordAuthentication getPasswordAuthentication(){
		return new PasswordAuthentication(user, password);
	}
	
}

} [/code]

LogCat

09-09 17:12:33.636: E/AsyncTask(16361): onPreExecute
09-09 17:12:33.644: E/AsyncTask(16361): doInBackground
09-09 17:12:33.644: W/dalvikvm(16361): Unable to resolve superclass of Lbr/com/afv/auxiliares/EnviaEmails$Autenticador; (370)
09-09 17:12:33.644: W/dalvikvm(16361): Link of class ‘Lbr/com/afv/auxiliares/EnviaEmails$Autenticador;’ failed
09-09 17:12:33.644: E/dalvikvm(16361): Could not find class ‘br.com.afv.jndistribuidora.auxiliares.EnviaEmails$Autenticador’, referenced from method br.com.afv.jndistribuidora.auxiliares.EnviaEmails.enviarEmailPedidosAberto
09-09 17:12:33.644: W/dalvikvm(16361): VFY: unable to resolve new-instance 219 (Lbr/com/afv/auxiliares/EnviaEmails$Autenticador;) in Lbr/com/afv/auxiliares/EnviaEmails;
09-09 17:12:33.644: D/dalvikvm(16361): VFY: replacing opcode 0x22 at 0x0011
09-09 17:12:33.644: W/dalvikvm(16361): Unable to resolve superclass of Lbr/com/afv/auxiliares/EnviaEmails$Autenticador; (370)
09-09 17:12:33.644: W/dalvikvm(16361): Link of class ‘Lbr/com/afv/auxiliares/EnviaEmails$Autenticador;’ failed
09-09 17:12:33.651: D/dalvikvm(16361): DexOpt: unable to opt direct call 0x0330 at 0x13 in Lbr/com/afv/auxiliares/EnviaEmails;.enviarEmailPedidosAberto
09-09 17:12:33.651: D/dalvikvm(16361): DexOpt: unable to opt direct call 0x073d at 0x1c in Lbr/com/afv/auxiliares/EnviaEmails;.enviarEmailPedidosAberto
09-09 17:12:33.651: D/dalvikvm(16361): DexOpt: unable to opt direct call 0x0738 at 0x21 in Lbr/com/afv/auxiliares/EnviaEmails;.enviarEmailPedidosAberto
09-09 17:12:33.651: I/dalvikvm(16361): DexOpt: unable to optimize static field ref 0x057f at 0x27 in Lbr/com/afv/auxiliares/EnviaEmails;.enviarEmailPedidosAberto
09-09 17:12:33.651: D/dalvikvm(16361): DexOpt: unable to opt direct call 0x0738 at 0x2b in Lbr/com/afv/auxiliares/EnviaEmails;.enviarEmailPedidosAberto
09-09 17:12:33.651: D/dalvikvm(16361): DexOpt: unable to opt direct call 0x073b at 0x40 in Lbr/com/afv/auxiliares/EnviaEmails;.enviarEmailPedidosAberto
09-09 17:12:33.651: D/dalvikvm(16361): DexOpt: unable to opt direct call 0x0745 at 0x4c in Lbr/com/afv/auxiliares/EnviaEmails;.enviarEmailPedidosAberto
09-09 17:12:33.651: W/dalvikvm(16361): threadid=12: thread exiting with uncaught exception (group=0x40bcd1f8)
09-09 17:12:33.651: E/AndroidRuntime(16361): FATAL EXCEPTION: AsyncTask #1
09-09 17:12:33.651: E/AndroidRuntime(16361): java.lang.RuntimeException: An error occured while executing doInBackground()
09-09 17:12:33.651: E/AndroidRuntime(16361): at android.os.AsyncTask$3.done(AsyncTask.java:278)
09-09 17:12:33.651: E/AndroidRuntime(16361): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
09-09 17:12:33.651: E/AndroidRuntime(16361): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
09-09 17:12:33.651: E/AndroidRuntime(16361): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
09-09 17:12:33.651: E/AndroidRuntime(16361): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
09-09 17:12:33.651: E/AndroidRuntime(16361): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
09-09 17:12:33.651: E/AndroidRuntime(16361): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
09-09 17:12:33.651: E/AndroidRuntime(16361): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
09-09 17:12:33.651: E/AndroidRuntime(16361): at java.lang.Thread.run(Thread.java:856)
09-09 17:12:33.651: E/AndroidRuntime(16361): Caused by: java.lang.NoClassDefFoundError: br.com.afv.jndistribuidora.auxiliares.EnviaEmails$Autenticador
09-09 17:12:33.651: E/AndroidRuntime(16361): at br.com.afv.jndistribuidora.auxiliares.EnviaEmails.enviarEmailPedidosAberto(EnviaEmails.java:30)
09-09 17:12:33.651: E/AndroidRuntime(16361): at br.com.afv.jndistribuidora.activity.EmailActivity$LongOperation.doInBackground(EmailActivity.java:104)
09-09 17:12:33.651: E/AndroidRuntime(16361): at br.com.afv.jndistribuidora.activity.EmailActivity$LongOperation.doInBackground(EmailActivity.java:1)
09-09 17:12:33.651: E/AndroidRuntime(16361): at android.os.AsyncTask$2.call(AsyncTask.java:264)
09-09 17:12:33.651: E/AndroidRuntime(16361): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
09-09 17:12:33.651: E/AndroidRuntime(16361): … 5 more
09-09 17:12:40.136: D/OpenGLRenderer(16361): Flushing caches (mode 0)

Valew.
Leandrooooo

Ninguém???

Tô achando que o problemas está na libs (jars) na javamail, pois, não está encontrando a classes.
Ninguém passou por isso?

Leandrooooo

Galera, bom dia,

Consegui dar mais um passo, estava add todos os jar do java mail no projeto android. Ai dava o erro acima.

Agora estou com outro problema, esse erro acontece na hora de transport.send()/transport.sendMessage(), peço a ajuda de vocês.
Segue a msg de erro no logcat.

09-11 08:42:06.961: E/ERRO(25682): IOException while sending message
09-11 08:42:06.961: W/System.err(25682): javax.mail.MessagingException: IOException while sending message;
09-11 08:42:06.961: W/System.err(25682): nested exception is:
09-11 08:42:06.961: W/System.err(25682): javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed;
09-11 08:42:06.961: W/System.err(25682): boundary="----=_Part_0_1094117768.1378899722711"
09-11 08:42:06.969: W/System.err(25682): at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1167)
09-11 08:42:06.969: W/System.err(25682): at javax.mail.Transport.send0(Transport.java:195)
09-11 08:42:06.969: W/System.err(25682): at javax.mail.Transport.send(Transport.java:124)

Obrigado.

Acredito que isso está acontecendo porque o JavaMail não encontrou o arquivo de configuração. Veja se os arquivos .default dentro do META-INF do activation.jar estão indo pra sua aplicação.

Ataxexe, valeu.