Android 发送邮件消息

用途:发送验证码,通过邮箱找回密码

不需要调用客户端直接使用代码进行发送

本项目使用到的jar包–本文结尾会附带下载链接

  1. activation.jar
  2. additionnal.jar
  3. mail.jar

主Activity代码:

具体页面结构:一个按钮,点击按钮发送邮件到指定的邮箱

按钮的点击事件逻辑

记得链接网络必须在子线程中

    /**     * 发送邮件     * 我这里是用的163邮箱发送到QQ邮箱     * 所以设置的MailServerHost为smtp.163.com     * 如果是QQ邮箱进行发送的话为smtp.qq.com     * 端口号请自行查阅是否为25     * 邮箱密码在后面有具体的说明,请看一下     */    private void sendEmail() {        try {            MailSenderInfo mailInfo = new MailSenderInfo();            mailInfo.setMailServerHost("smtp.163.com");            mailInfo.setMailServerPort("25");            mailInfo.setValidate(true);            mailInfo.setUserName("你的邮箱地址");  //你的邮箱地址            mailInfo.setPassword("您的邮箱密码");//您的邮箱密码            mailInfo.setFromAddress("你的邮箱地址");//和上面username的邮箱地址一致            mailInfo.setToAddress("接收方的邮件地址");            mailInfo.setSubject("邮件主题");            mailInfo.setContent("邮件内容");            //这个类主要来发送邮件            SimpleMailSender sms = new SimpleMailSender();            boolean b = sms.sendTextMail(mailInfo);//发送文体格式,返回是否发送成功的boolean类型            Log.e("MainActivity", "MainActivity sendEmail()"+b);//sms.sendHtmlMail(mailInfo);//发送html格式        } catch (Exception e) {            Log.e("SendMail", e.getMessage(), e);        }    }

关于邮箱密码的说明

由于是android端发送邮件,属于客户端进行发送邮件,所以直接用邮件的登录密码进行发送是不可以的,需要在PC网页端进行设置自己的邮箱:开启POP3/SMTP/IMAP服务

QQ邮箱和163邮箱的设置方法

163邮箱设置方法-你的感冒清

QQ邮箱设置方法-你的感冒清

邮件的实体类代码

    public class MailSenderInfo {        // 发送邮件的服务器的IP和端口        private String mailServerHost;        private String mailServerPort = "25";        // 邮件发送者的地址        private String fromAddress;        // 邮件接收者的地址        private String toAddress;        // 登陆邮件发送服务器的用户名和密码        private String userName;        private String password;        // 是否需要身份验证        private boolean validate = true;        // 邮件主题        private String subject;        // 邮件的文本内容        private String content;        // 邮件附件的文件名        private String[] attachFileNames;        /**         * 获得邮件会话属性         */        public Properties getProperties() {            Properties p = new Properties();            p.put("mail.smtp.host", this.mailServerHost);            p.put("mail.smtp.port", this.mailServerPort);            p.put("mail.smtp.auth", validate ? "true" : "false");            return p;        }        public String getMailServerHost() {            return mailServerHost;        }        public void setMailServerHost(String mailServerHost) {            this.mailServerHost = mailServerHost;        }        public String getMailServerPort() {            return mailServerPort;        }        public void setMailServerPort(String mailServerPort) {            this.mailServerPort = mailServerPort;        }        public boolean isValidate() {            return validate;        }        public void setValidate(boolean validate) {            this.validate = validate;        }        public String[] getAttachFileNames() {            return attachFileNames;        }        public void setAttachFileNames(String[] fileNames) {            this.attachFileNames = fileNames;        }        public String getFromAddress() {            return fromAddress;        }        public void setFromAddress(String fromAddress) {            this.fromAddress = fromAddress;        }        public String getPassword() {            return password;        }        public void setPassword(String password) {            this.password = password;        }        public String getToAddress() {            return toAddress;        }        public void setToAddress(String toAddress) {            this.toAddress = toAddress;        }        public String getUserName() {            return userName;        }        public void setUserName(String userName) {            this.userName = userName;        }        public String getSubject() {            return subject;        }        public void setSubject(String subject) {            this.subject = subject;        }        public String getContent() {            return content;        }        public void setContent(String textContent) {            this.content = textContent;        }  }

简单邮件(不带附件的邮件)发送器 代码

    /**     * 简单邮件(不带附件的邮件)发送器     */    public class SimpleMailSender {        /**         * 以文本格式发送邮件         *         * @param mailInfo 待发送的邮件的信息         */        public boolean sendTextMail(MailSenderInfo mailInfo) {            // 判断是否需要身份认证            MyAuthenticator authenticator = null;            Properties pro = mailInfo.getProperties();            if (mailInfo.isValidate()) {                // 如果需要身份认证,则创建一个密码验证器                authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());            }            // 根据邮件会话属性和密码验证器构造一个发送邮件的session            Session sendMailSession = Session.getDefaultInstance(pro, authenticator);            try {                // 根据session创建一个邮件消息                Message mailMessage = new MimeMessage(sendMailSession);                // 创建邮件发送者地址                Address from = new InternetAddress(mailInfo.getFromAddress());                // 设置邮件消息的发送者                mailMessage.setFrom(from);                // 创建邮件的接收者地址,并设置到邮件消息中                Address to = new InternetAddress(mailInfo.getToAddress());                mailMessage.setRecipient(Message.RecipientType.TO, to);                // 设置邮件消息的主题                mailMessage.setSubject(mailInfo.getSubject());                // 设置邮件消息发送的时间                mailMessage.setSentDate(new Date());                // 设置邮件消息的主要内容                String mailContent = mailInfo.getContent();                mailMessage.setText(mailContent);                // 发送邮件                Transport.send(mailMessage);                return true;            } catch (MessagingException ex) {                ex.printStackTrace();            }            return false;        }        /**         * 以HTML格式发送邮件         *         * @param mailInfo 待发送的邮件信息         */        public static boolean sendHtmlMail(MailSenderInfo mailInfo) {            // 判断是否需要身份认证            MyAuthenticator authenticator = null;            Properties pro = mailInfo.getProperties();            //如果需要身份认证,则创建一个密码验证器            if (mailInfo.isValidate()) {                authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());            }            // 根据邮件会话属性和密码验证器构造一个发送邮件的session            Session sendMailSession = Session.getDefaultInstance(pro, authenticator);            try {                // 根据session创建一个邮件消息                Message mailMessage = new MimeMessage(sendMailSession);                // 创建邮件发送者地址                Address from = new InternetAddress(mailInfo.getFromAddress());                // 设置邮件消息的发送者                mailMessage.setFrom(from);                // 创建邮件的接收者地址,并设置到邮件消息中                Address to = new InternetAddress(mailInfo.getToAddress());                // Message.RecipientType.TO属性表示接收者的类型为TO                mailMessage.setRecipient(Message.RecipientType.TO, to);                // 设置邮件消息的主题                mailMessage.setSubject(mailInfo.getSubject());                // 设置邮件消息发送的时间                mailMessage.setSentDate(new Date());                // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象                Multipart mainPart = new MimeMultipart();                // 创建一个包含HTML内容的MimeBodyPart                BodyPart html = new MimeBodyPart();                // 设置HTML内容                html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");                mainPart.addBodyPart(html);                // 将MiniMultipart对象设置为邮件内容                mailMessage.setContent(mainPart);                // 发送邮件                Transport.send(mailMessage);                return true;            } catch (MessagingException ex) {                ex.printStackTrace();            }            return false;        }}

辅助类

    public class MyAuthenticator extends Authenticator {        String userName = null;        String password = null;        public MyAuthenticator() {        }        public MyAuthenticator(String username, String password) {            this.userName = username;            this.password = password;        }        protected PasswordAuthentication getPasswordAuthentication() {            return new PasswordAuthentication(userName, password);        }}

相关jar包下载

相关jar包一键打包下载

中间可能会遇到的问题

可能会出现的问题-你的感冒清

笔者QQ:你的感冒清(337081267)

更多相关文章

  1. Android通过Alpha实现渐变效果的几个方法
  2. Android学习(2)EditView属性
  3. 编程实现Android相机Camera设置
  4. Android(安卓)Studio 设置背景色
  5. Android(安卓)Studio 修改常用设置
  6. [置顶] Android(安卓)实现对话框圆角功能
  7. Android(安卓)开发Rect
  8. Android(安卓)设置DrawableRight和DrawableLeft点击事件
  9. Android学习之五:android一些基本控件

随机推荐

  1. android rotate
  2. Google将推出Android手机版Voice应用程序
  3. Android单元测试框架 Robolectric
  4. android selinux权限, Permission denied,
  5. 在模拟器上安装软件
  6. Linux 环境下实战 Rsync 备份工具及配置
  7. 一款霸榜 GitHub 的开源 Linux 资源监视
  8. Android调用系统相册或拍照实现头像更换
  9. Android中Handler造成内存泄露解决方法
  10. Ubuntu 开启 Android 的 USB 调试模式