准备工作-下载最新版本的JMail

https://java.net/projects/javamail/pages/Home#Download_JavaMail_1.5.2_Release

http://www.oracle.com/technetwork/java/javase/downloads/index-135046.html

在android上发送邮件方式:

第一种:借助GMail APP客户端,缺点是必须使用GMail帐号,有点是比较方便

不需要写很多代码,但是不是很灵活。

第二种:基于JMail实现,可以很灵活的自己设置各种属性,不需要GMail帐号

在第二种方式的实现之前,看一下JMail对EMail结构的划分:


基于SMTP协议发送EMail,所以客户端必须要知道SMTP的主机

腾讯邮件的SMTP主机为:stmp.qq.com端口为465基于SSL协议

最后我做了一个简单的封装,把发送文本加图像附件的功能做出了

一个单独的Class,只要调用一下即可完成:

package com.gloomyfish.jmail.demo;import java.util.Date;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.DataSource;import javax.activation.FileDataSource;import javax.mail.Address;import javax.mail.Message;import javax.mail.Multipart;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 EMailSender {private String host;private String port;private String userName;private String password;private String[] images;public String[] getImagePath() {return images;}public void setImagePath(String[] imagePath) {this.images = imagePath;}public EMailSender(String host, String port, String userName, String password) {this.host = host;this.port = port;this.userName = userName;this.password = password;}public void sendEmail(String subject, String recepits, String sender, String content) {Properties props = new Properties();props.put("mail.smtp.host", host);  //设置smtp的服务器地址// props.put("mail.smtp.starttls.enable", "true");// props.put("mail.smtp.port", port); // 设置端口// props.put("mail.smtp.auth", "true"); //设置smtp服务器要身份验证。props.put("mail.smtp.socketFactory.port", port);props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");props.put("mail.smtp.auth", "true");props.put("mail.smtp.port", port);// 返回授权Base64编码PopupAuthenticator auth = new PopupAuthenticator(userName, password);// 获取会话对象Session session = Session.getInstance(props, auth);// 设置为DEBUG模式session.setDebug(true);// 邮件内容对象组装MimeMessage message = new MimeMessage(session);try{Address addressFrom = new InternetAddress(sender, "Jia Zhi Gang");Address addressTo = new InternetAddress(recepits, "My QQ E-Mail");message.setSubject(subject);message.setSentDate(new Date());message.setFrom(addressFrom);message.addRecipient(Message.RecipientType.TO,addressTo); // 邮件文本/HTML内容Multipart multipart = new MimeMultipart();MimeBodyPart messageBodyPart = new MimeBodyPart();        messageBodyPart.setContent(content, "text/html");        multipart.addBodyPart(messageBodyPart);                // 添加邮件附件        if (images != null && images.length > 0) {            for (String filePath : images) {                MimeBodyPart attachPart = new MimeBodyPart();                 DataSource source = new FileDataSource(filePath);                attachPart.setDataHandler(new DataHandler(source));                attachPart.setFileName(filePath);                multipart.addBodyPart(attachPart);            }        }        // 保存邮件内容        message.setContent(multipart);// 获取SMTP协议客户端对象,连接到指定SMPT服务器Transport transport = session.getTransport("smtp");transport.connect(host, Integer.parseInt(port), userName, password);System.out.println("connet it success!!!!");// 发送邮件到SMTP服务器Thread.currentThread().setContextClassLoader( getClass().getClassLoader() );Transport.send(message);System.out.println("send it success!!!!");// 关闭连接transport.close();}catch(Exception e){e.printStackTrace();}}public String getHost() {return host;}public void setHost(String host) {this.host = host;}public String getPort() {return port;}public void setPort(String port) {this.port = port;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}

用户授权类:

package com.gloomyfish.jmail.demo;import javax.mail.Authenticator;import javax.mail.PasswordAuthentication;class PopupAuthenticator extends Authenticator {private String userName;private String password;public PopupAuthenticator(String userName, String password){this.userName = userName;this.password = password;}    public PasswordAuthentication getPasswordAuthentication() {        return new PasswordAuthentication(userName, password);    }}
特别注意:

1.在android上发送邮件必须自己导入三个相关的JAVA文件


上述JAR文件的下载地址已经在文章开始处给出!

更多相关文章

  1. 介绍一个Android开源项目:GifView——Android显示GIF动画
  2. Android下使用Properties文件保存程序设置
  3. Android(安卓)Mqtt
  4. android 设置系统屏幕亮度
  5. 设置 Toolbar(ActionBar) 上的按钮颜色
  6. Android——Android(安卓)Studio开发环境搭建及设置本地Gradle方
  7. Android的断点设置
  8. 在RelativeLayout布局中可以设置标签的android:layout_toLeftO..
  9. Android的AnimationSet动画实现图片的轮播,移动和切换可以自定义

随机推荐

  1. vs xamarin android 监听返回键退出程序
  2. [转]Android文字跑马灯控件
  3. Android Proguard 如何混淆package name
  4. android入门之一 开发环境搭建
  5. android intent深入解析
  6. Android(安卓)NDK开发入门篇 .
  7. android学习小结3
  8. Android关于SD卡中多层目录的创建
  9. Android Logo消息角标数字提醒
  10. Android 网络连接-重试机制-HttpRequestR