2012-05-02 21 views
0

Я пытаюсь отправить автоматическое сообщение электронной почты в фоновом режиме в качестве уведомления для пользователя, я получаю исключения нулевого указателя на следующую строку,исключение на отправку автоматической электронной почты

Transport.send(message); 

Может кто-нибудь помочь? Благодарю.

Вот мой сниппет,

public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception { 
    try{ 

    MimeMessage message = new MimeMessage(session); 
    DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/plain")); 
    message.setSender(new InternetAddress(sender)); 
    message.setSubject(subject); 
    message.setDataHandler(handler); 
    if (recipients.indexOf(',') > 0) 
     message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients)); 
    else 
     message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients)); 

     // Log.v("ziad", "wanna send..."); 
     Transport.send(message); 
     // Log.v("ziad", "sent..."); 
    }catch(Exception e){ 

     Log.v("ziad",e.getMessage()); 
    } 
} 

Я добавил разрешение Интернет, а также.

Вот мой LogCat,

05-02 17:57:26.266: ERROR/SendMail(1220): println needs a message 
05-02 17:57:26.266: ERROR/SendMail(1220): java.lang.NullPointerException: println needs a message 
05-02 17:57:26.266: ERROR/SendMail(1220):  at android.util.Log.println_native(Native Method) 
05-02 17:57:26.266: ERROR/SendMail(1220):  at android.util.Log.v(Log.java:116) 
05-02 17:57:26.266: ERROR/SendMail(1220):  at zaid.project.EmailSender.GmailSender.sendMail(GmailSender.java:74) 
05-02 17:57:26.266: ERROR/SendMail(1220):  at zaid.project.EmailSender.EmailSenderActivity$1.onClick(EmailSenderActivity.java:33) 
05-02 17:57:26.266: ERROR/SendMail(1220):  at android.view.View.performClick(View.java:2485) 
05-02 17:57:26.266: ERROR/SendMail(1220):  at android.view.View$PerformClick.run(View.java:9080) 
05-02 17:57:26.266: ERROR/SendMail(1220):  at android.os.Handler.handleCallback(Handler.java:587) 
05-02 17:57:26.266: ERROR/SendMail(1220):  at android.os.Handler.dispatchMessage(Handler.java:92) 
05-02 17:57:26.266: ERROR/SendMail(1220):  at android.os.Looper.loop(Looper.java:123) 
05-02 17:57:26.266: ERROR/SendMail(1220):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
05-02 17:57:26.266: ERROR/SendMail(1220):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-02 17:57:26.266: ERROR/SendMail(1220):  at java.lang.reflect.Method.invoke(Method.java:507) 
05-02 17:57:26.266: ERROR/SendMail(1220):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
05-02 17:57:26.266: ERROR/SendMail(1220):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
05-02 17:57:26.266: ERROR/SendMail(1220):  at dalvik.system.NativeStart.main(Native Method) 
05-02 17:57:27.946: DEBUG/dalvikvm(324): GC_EXPLICIT freed 4K, 54% free 2538K/5511K, external 1625K/2137K, paused 254ms 
05-02 17:57:32.875: DEBUG/dalvikvm(136): GC_EXPLICIT freed 38K, 51% free 2958K/5959K, external 4845K/5329K, paused 126ms 

ответ

1

Возможно MimeMessage нуждается в текстовом наборе? Попробуйте установить пустое сообщение следующим образом:

message.setText(""); 

Посмотрите, избавляется ли это от вашего NPE.

Edit: На самом деле, я думаю, что это может быть эта линия:

Log.v("ziad",e.getMessage()); 

Попробуйте комментируя, что и посмотреть, если это помогает.

+0

нет это не Робинсон .... Такое же исключение появляется снова! –

+0

См. Обновленный ответ –

+0

. В большинстве случаев есть еще одно исключение на вашем Transport.send, которое генерирует исключение с пустым сообщением, которое, в свою очередь, вызывает и исключает при попытке его регистрации. Попробуйте записать e.toString() вместо этого и вызвать e.printStackTrace() – njzk2

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