项目用到了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;}}


最后是截图:

Android 客户端发送邮件(JMail方式)_第1张图片


更多相关文章

  1. Android 博客园客户端 (二) 新界面&部分功能
  2. Android兼容性测试GTS-环境搭建、测试执行、结果分析
  3. Android自动化测试之MonkeyRunner录制和回放脚本(十一)
  4. Socket Android手机客户端与PC服务端局域网内联测试
  5. BBC发布了android客户端应用
  6. android 测试简介
  7. Android客户端上传文件,C#服务端接收文件
  8. Windows 8(64位)如何搭建 Android 开发环境与真机测试
  9. android客户端利用sokcet通信和向Java服务端发请求,Java服务端把

随机推荐

  1. Android(安卓)XML解析学习——方式比较
  2. Android(安卓)VacantCell缓存
  3. Android中的NDK的例子
  4. 明年 Android(安卓)旗舰手机会有什么特性
  5. Android开发者福利之--------Android(安
  6. Android(安卓)Hook程序,对库函数进行HOOK
  7. [原创] 如何在android中实现shake的动作
  8. Android里应用程序,应用程序窗口和视图对
  9. Android软键盘(三)自动弹出键盘的现象
  10. 【Android(安卓)屏幕扩展/共享】5分钟搞