Quantcast
Channel: Sending Email in Android using JavaMail API without using the default/built-in app - Stack Overflow
Viewing all articles
Browse latest Browse all 26

Answer by droopie for Sending Email in Android using JavaMail API without using the default/built-in app

$
0
0

here is an alt version that also works for me and has attachments (posted already above but complete version unlike the source link, which people posted they cant get it to work since its missing data)

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("") && !_pass.equals("") && _to.length > 0 && !_from.equals("") && !_subject.equals("") && !_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 < _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 void setTo(String[] toArr) {      // TODO Auto-generated method stub      this._to=toArr;  }  public void setFrom(String string) {      // TODO Auto-generated method stub      this._from=string;  }  public void setSubject(String string) {      // TODO Auto-generated method stub      this._subject=string;  }    // more of the getters and setters ….. }

and to call it in an 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("gmailusername@gmail.com", "password");       String[] toArr = {"bla@bla.com", "lala@lala.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(MailApp.this, "Email was sent successfully.", Toast.LENGTH_LONG).show();         } else {           Toast.makeText(MailApp.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);       }     }   }); } 

Viewing all articles
Browse latest Browse all 26

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>