项目用到了Android 客户端发送邮件,不能够使用Android 的服务,那就用JMail喽,本来以为很简单的事情折腾了好半天才搞定!

必须的jar

  • mail.jar
  • activation.jar
  • additionnal.jar.zip

下载链接:http://download.csdn.net/detail/vestigge/5101219


首先是调用的代码:

Mail m = new Mail("******@gmail.com", "密码");String[] toArr = { "569629066@qq.com"};m.set_to(toArr);m.set_from("Vesti_Yang");m.set_subject("Android 客户端测试邮件");m.set_body("Android 客户端测试链接\n\n http://img.my.csdn.net/uploads/201210/29/1351508410_1812.png");try{//m.addAttachment("/sdcard/filelocation");if (m.send()){Toast.makeText(MainActivity.this, "邮件发送成功", Toast.LENGTH_LONG).show();}else{Toast.makeText(MainActivity.this, "邮件发送失败", Toast.LENGTH_LONG).show();}}catch (Exception e){e.printStackTrace();}

Mail.java的实现:

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(){// 邮件服务器,QQ邮箱就用smtp.qq.com,其它类似_host = "smtp.gmail.com";// smtp 端口_port = "465";// socketfactory 端口_sport = "465";_user = "";_pass = "";_from = "";_subject = "";_body = "";_debuggable = false; // smtp默认验证_auth = true;_multipart = new MimeMultipart();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());BodyPart messageBodyPart = new MimeBodyPart();messageBodyPart.setText(_body);_multipart.addBodyPart(messageBodyPart);msg.setContent(_multipart);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);}@Overridepublic 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;}public String get_user(){return _user;}public void set_user(String _user){this._user = _user;}public String get_pass(){return _pass;}public void set_pass(String _pass){this._pass = _pass;}public String[] get_to(){return _to;}public void set_to(String[] _to){this._to = _to;}public String get_from(){return _from;}public void set_from(String _from){this._from = _from;}public String get_port(){return _port;}public void set_port(String _port){this._port = _port;}public String get_sport(){return _sport;}public void set_sport(String _sport){this._sport = _sport;}public String get_host(){return _host;}public void set_host(String _host){this._host = _host;}public String get_subject(){return _subject;}public void set_subject(String _subject){this._subject = _subject;}public String get_body(){return _body;}public void set_body(String _body){this._body = _body;}public boolean is_auth(){return _auth;}public void set_auth(boolean _auth){this._auth = _auth;}public boolean is_debuggable(){return _debuggable;}public void set_debuggable(boolean _debuggable){this._debuggable = _debuggable;}public Multipart get_multipart(){return _multipart;}public void set_multipart(Multipart _multipart){this._multipart = _multipart;}}


最后是截图:



更多相关文章

  1. Android(安卓)博客园客户端 (二) 新界面&部分功能
  2. Android兼容性测试GTS-环境搭建、测试执行、结果分析
  3. java websocket client ssl(wss)
  4. Android自动化测试之MonkeyRunner录制和回放脚本(十一)
  5. Android(安卓)收缩展开动画
  6. BBC发布了android客户端应用
  7. Android基础笔记(二)-数据存储和界面展现
  8. Socket Android手机客户端与PC服务端局域网内联测试
  9. 跑马灯效果

随机推荐

  1. 干货 | SQL如何学?分享5大免费学习资源
  2. 如何不再当分母?我告诉你一个方法
  3. 最新深度学习合集:GitHub趋势排行第一位,仅
  4. 爬虫速度太慢?来试试用异步协程提速吧!
  5. 来一家咖啡店的所见所想
  6. 对你没有看错!不到 10 行代码完成抖音热门
  7. Ansible 之 Inventory配置
  8. Java高并发编程,构建并发编程知识体系,提升
  9. 规划与目标
  10. 跟繁琐的模型说拜拜!深度学习脚手架 Model