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.
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.)
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)
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)
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.