I am using JavaMail APi for sending email without the intent from my android app. i am following the question: Sending Email in Android using JavaMail API without using the default/built-in app
and
http://www.jondev.net/articles/Sending_Emails_without_User_Intervention_(no_Intents)_in_Android
Here is my code. On the button click following is the code:
    public void onClick(View v){
    Runnable runnable = new Runnable(){
                @Override
                public void run() {
                    Mail m = new Mail("MY Gmail Address", "My password"); 
                      String[] toArr = {"sender@gmail.com"}; 
                      m.setTo(toArr); 
                      m.setFrom("wooo@wooo.com"); 
                      m.setSubject("This is an email sent using my Mail JavaMail wrapper from an Android device."); 
                      m.setBody("Email body."); 
                      try { 
                        m.addAttachment("/sdcard/filelocation"); 
                        if(m.send()) { 
                          Toast.makeText(MyActivity.this, "Email was sent successfully.", Toast.LENGTH_LONG).show(); 
                        } else { 
                          Toast.makeText(MyActivity.this, "Email was not sent.", Toast.LENGTH_LONG).show(); 
                        } 
                      } catch(Exception e) { 
                        //Toast.makeText(MailApp.this, "There was a problem sending the email.", Toast.LENGTH_LONG).show(); 
                        Log.e("MailApp", "Could not send email", e); 
                      } 
                }
            };
            new Thread(runnable).start();
}
The class is as follows:
public class Mail { private String _user; private String _pass;
      private String _to; 
      private String _from; 
      private String _port; 
      private String _sport; 
      private String _host; 
      private String _subject; 
      private String _body; 
      private boolean _auth; 
      private boolean _debuggable; 
      private Multipart _multipart; 
      public Mail() { 
        _host = "smtp.gmail.com"; // default smtp server 
        _port = "465"; // default smtp port 
        _sport = "465"; // default socketfactory port 
        _user = "My mail id"; // username 
        _pass = "My Password"; // password 
        _from = ""; // email sent from 
        _subject = "Hi"; // email subject 
        _body = "how are you"; // email body 
        _debuggable = false; // debug mode on or off - default off 
        _auth = true; // smtp authentication - default on 
        _multipart = new MimeMultipart(); 
        // There is something wrong with MailCap, javamail can not find a handler for the multipart/mixed part, so this bit needs to be added. 
        MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap(); 
        mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html"); 
        mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml"); 
        mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain"); 
        mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed"); 
        mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822"); 
        CommandMap.setDefaultCommandMap(mc); 
      } 
      public void setFrom(String string) {
        // TODO Auto-generated method stub
          _from="from email address";
    }
    public void setSubject(String string) {
        // TODO Auto-generated method stub
        _subject="Hi";
    }
    public void setTo(String[] toArr) {
        // TODO Auto-generated method stub
        _to = "to email address";
    }
    public Mail(String user, String pass) { 
        this(); 
        _user = user; 
        _pass = pass; 
      } 
      public boolean send() throws Exception { 
        Properties props = _setProperties(); 
        if(!_user.equals("") && !_pass.equals("") && !_from.equals("") && !_subject.equals("") && !_body.equals("")) { 
          Session session = Session.getInstance(props); 
          MimeMessage msg = new MimeMessage(session); 
          msg.setFrom(new InternetAddress(_from)); 
          //InternetAddress[] addressTo = new InternetAddress[_to.toString()]; 
          /*for (int i = 0; i < _to.length; i++) { 
            addressTo[i] = new InternetAddress(_to[i]); 
          }*/ 
            msg.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(_to)); 
          msg.setSubject(_subject); 
          // setup message body 
          BodyPart messageBodyPart = new MimeBodyPart(); 
          messageBodyPart.setText(_body); 
          _multipart.addBodyPart(messageBodyPart); 
          // Put parts in message 
          msg.setContent(_multipart); 
          // send email 
          Transport.send(msg); 
          return true; 
        } else { 
          return false; 
        } 
      } 
      public void addAttachment(String filename) throws Exception { 
        BodyPart messageBodyPart = new MimeBodyPart(); 
        DataSource source = new FileDataSource(filename); 
        messageBodyPart.setDataHandler(new DataHandler(source)); 
        messageBodyPart.setFileName(filename); 
        _multipart.addBodyPart(messageBodyPart); 
      } 
      public PasswordAuthentication getPasswordAuthentication() { 
        return new PasswordAuthentication(_user, _pass); 
      } 
      private Properties _setProperties() { 
        Properties props = new Properties(); 
        props.put("mail.smtp.host", _host); 
        if(_debuggable) { 
          props.put("mail.debug", "true"); 
        } 
        if(_auth) { 
          props.put("mail.smtp.auth", "true"); 
        } 
        props.put("mail.smtp.port", _port); 
        props.put("mail.smtp.socketFactory.port", _sport); 
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
        props.put("mail.smtp.socketFactory.fallback", "false"); 
        return props; 
      } 
      // the getters and setters 
      public String getBody() { 
        return _body; 
      } 
      public void setBody(String _body) { 
        this._body = _body; 
      } 
When i click the button on my android device, it gives me the following errors:
06-12 13:26:42.523: E/MailApp(8579): Could not send email
06-12 13:26:42.523: E/MailApp(8579): java.lang.NullPointerException
06-12 13:26:42.523: E/MailApp(8579):    at com.MyApp.MyActivity$Mail.send(MyActivity.java:280)
06-12 13:26:42.523: E/MailApp(8579):    at com.MyApp.MActivity$1.run(MActivity.java:146)
06-12 13:26:42.523: E/MailApp(8579):    at java.lang.Thread.run(Thread.java:1019)
Am I missing something?
 
     
    