title: android: sending email automatically
body: <p>at first sorry for my English. I need to make app that will 
  automatically send a file from the SD card. I thought that I will do 
  it through email. I write the code to send email </p>
  
  <pre><code>import android.app.Activity; 
  import android.content.Intent; 
  import android.net.Uri; 
  import android.os.Bundle; 
  import android.view.View; 
  public class EmailActivity extends Activity { 
          /** Called when the activity is first created. */ 
      @Override 
      public void onCreate(Bundle savedInstanceState) { 
          super.onCreate(savedInstanceState); 
          setContentView(R.layout.main); 
      } 
      public void poslat(View button) { 
          Intent i = new Intent(android.content.Intent.ACTION_SEND); 
                  String Email[] = { "a@aa.aa" }; 
                  i.putExtra(android.content.Intent.EXTRA_EMAIL, Email); 
                  i.putExtra(android.content.Intent.EXTRA_SUBJECT, "Tu bude datum"); 
                  i.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/lala/ 
  lala.txt")); 
                  i.setType("plain/text"); 
                  startActivity(i); 
          } 
  }
  </code></pre>
  
  <p>works well, but I feel that it cannot be configured to be sending 
  automatically. How can I start? or do you have any idea how to 
  automatically send a file from the SD card? eg. via FTP or something 
  else? .. Thank you very much</p>
  
  <hr>
  
  <p>i have got this code</p>
  
  <p>Mail.java</p>
  
  <pre><code>package mail.mail;
  
  import java.util.Date; 
  import java.util.Properties; 
  import javax.activation.CommandMap; 
  import javax.activation.DataHandler; 
  import javax.activation.DataSource; 
  import javax.activation.FileDataSource; 
  import javax.activation.MailcapCommandMap; 
  import javax.mail.BodyPart; 
  import javax.mail.Multipart; 
  import javax.mail.PasswordAuthentication; 
  import javax.mail.Session; 
  import javax.mail.Transport; 
  import javax.mail.internet.InternetAddress; 
  import javax.mail.internet.MimeBodyPart; 
  import javax.mail.internet.MimeMessage; 
  import javax.mail.internet.MimeMultipart; 
  
  
  public class Mail extends javax.mail.Authenticator { 
    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 = ""; // username 
      _pass = ""; // password 
      _from = ""; // email sent from 
      _subject = ""; // email subject 
      _body = ""; // 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 Mail(String user, String pass) { 
      this(); 
  
      _user = user; 
      _pass = pass; 
    } 
  
    public boolean send() throws Exception { 
      Properties props = _setProperties(); 
  
      if(!_user.equals("") &amp;&amp; !_pass.equals("") &amp;&amp; _to.length &gt; 0 &amp;&amp; !_from.equals("") &amp;&amp; !_subject.equals("") &amp;&amp; !_body.equals("")) { 
        Session session = Session.getInstance(props, this); 
  
        MimeMessage msg = new MimeMessage(session); 
  
        msg.setFrom(new InternetAddress(_from)); 
  
        InternetAddress[] addressTo = new InternetAddress[_to.length]; 
        for (int i = 0; i &lt; _to.length; i++) { 
          addressTo[i] = new InternetAddress(_to[i]); 
        } 
          msg.setRecipients(MimeMessage.RecipientType.TO, addressTo); 
  
        msg.setSubject(_subject); 
        msg.setSentDate(new Date()); 
  
        // 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); 
    } 
  
    @Override 
    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; 
    } 
  
    public String getSubject() { 
          return _subject; 
        } 
  
    public void setSubject(String _subject) { 
          this._subject = _subject; 
        } 
  
    public String getFrom() { 
          return _from; 
        } 
    public void setFrom(String _from) { 
          this._from = _from; 
        } 
    public String[] getTO() { 
          return _to; 
        } 
    public void setTo(String[] _to) { 
          this._to = _to; 
        } 
    // more of the getters and setters ….. 
  
  
  } 
  </code></pre>
  
  <p>lala.java</p>
  
  <pre><code>package mail.mail;
  
  import android.app.Activity;
  import android.os.Bundle;
  import android.util.Log;
  import android.view.View;
  import android.widget.Button;
  import android.widget.Toast;
  
  public class lala extends Activity{
      @Override 
      public void onCreate(Bundle icicle) { 
        super.onCreate(icicle); 
        setContentView(R.layout.main); 
  
        Button addImage = (Button) findViewById(R.id.send_email); 
        addImage.setOnClickListener(new View.OnClickListener() { 
          public void onClick(View view) { 
            Mail m = new Mail("aa@gmail.com", "aa"); 
  
            String[] toArr = {"aaa@centrum.sk"}; 
            m.setTo(toArr); 
            m.setFrom("aa@gmail.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"); 
  
  
  
            } 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); 
            } 
          } 
        }); 
      } 
  
  }
  </code></pre>
  
  <p>what is wrong here?.. =//</p>