2013-10-08 3 views
0

У меня есть этот кусок кода:Android приложение электронной почты не работает

import java.util.Properties; 

import javax.mail.BodyPart; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.Multipart; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.AddressException; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeBodyPart; 
import javax.mail.internet.MimeMessage; 
import javax.mail.internet.MimeMultipart; 

import android.telephony.gsm.GsmCellLocation; 

public class EmailSender { 

    public void sendEmail(String personId, GsmCellLocation location) { 
     Properties props = System.getProperties(); 
     props.put("mail.smtp.starttls.enable", true); // added this line 
     props.put("mail.smtp.host", "smtp.gmail.com"); 
     props.put("mail.smtp.ssl.trust", "smtp.gmail.com"); 
     props.put("mail.smtp.user", "*******"); 
     props.put("mail.smtp.password", "******"); 
     props.put("mail.smtp.port", "25"); 
     props.put("mail.smtp.auth", true); 
     Session session = Session.getInstance(props, new GMailAuthenticator("*****", "*******")); 

     MimeMessage message = new MimeMessage(session); 

     System.out.println("Port: " + session.getProperty("mail.smtp.port")); 

     // Create the email addresses involved 
     try { 
      InternetAddress from = new InternetAddress("*****@gmail.com"); 
      message.setSubject("Yes we can"); 
      message.setFrom(from); 
      message.addRecipients(Message.RecipientType.TO, InternetAddress.parse("****@gmail.com")); 

      // Create a multi-part to combine the parts 
      Multipart multipart = new MimeMultipart("alternative"); 

      // Create your text message part 
      BodyPart messageBodyPart = new MimeBodyPart(); 
      messageBodyPart.setText("some text to send"); 

      // Add the text part to the multipart 
      multipart.addBodyPart(messageBodyPart); 

      // Create the html part 
      messageBodyPart = new MimeBodyPart(); 
      String htmlMessage = "Person " + personId + " at location: " + location + " might be in trouble, please check! "; 
      messageBodyPart.setContent(htmlMessage, "text/html"); 


      // Add html part to multi part 
      multipart.addBodyPart(messageBodyPart); 

      // Associate multi-part with message 
      message.setContent(multipart); 

      // Send message 
      Transport transport = session.getTransport("smtp"); 
      transport.connect("smtp.gmail.com", "username", "password"); 
      System.out.println("Transport: " + transport.toString()); 
      transport.sendMessage(message, message.getAllRecipients()); 


     } catch (AddressException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (MessagingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

отправить по электронной почте самому себе.

Когда я пытаюсь запустить его на своем Android-устройстве, он продолжает говорить, что это:

http://pastebin.com/C6vCuSke

Так что появляется что-то происходит не так с импортом в mail.jar и activation.jar файлов. Тем не менее, я импортировал их правильно и добавил их в список на вкладке «Заказ» и «Экспорт», и он работает, когда я запускаю его как обычное приложение Java. Может ли кто-нибудь сказать мне, что пошло не так?

ответ

0

Я уже нашел проблему, я явно использовал файл jar, который был поврежден или поврежден в некотором роде! Рад, что я нашел проблему :)

0

Возможно, вы пропустили экспорт фляги, содержащей java.awt.datatransfer.Transferable.

Я думаю, что он включен в rt.jar (входит в состав JRE). Вероятно, должно быть возможно экспортировать это в apk, но оно довольно тяжелое (это время выполнения Java!), И количество методов может превышать ограничение на один apk (65536). Поэтому вы, вероятно, должны изменить библиотеку электронной почты.

Смежные вопросы