Android Send Email 发送邮件

最近公司有个需求,需要在意见反馈模块中增加发送邮件功能,看了网上好多的例子都是用的HtmlEmail和我需求不大一样因此重新写了一版发送邮件代码供大家分享。

整理了个EmailUtils工具:1、发送文字邮件 2、发送附件邮件

jar包:activation.jar  additionnal.jar  mail.jar 自己去网上搜很多资源

import java.io.File;
import java.util.List;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
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;
import javax.mail.internet.MimeUtility;

/**
 * 邮件
 * Created by Administrator on 2018/3/26.
 */
@SuppressWarnings("all")
public class EmailUtils {

    private EmailUtils() {
    }

    public static EmailUtils getInstance() {
        return SafeMode.mEmailUtil;
    }

    public static class SafeMode {
        private static final EmailUtils mEmailUtil = new EmailUtils();
    }

    /**
     * 发送邮件
     *
     * @param fromEmailAddress
     * @param fromEmailPassword
     * @param toEmailAddress
     * @param Subject
     * @param Content
     * @return
     */
    public boolean sendEmailMessages(String fromEmailAddress, String fromEmailPassword, String toEmailAddress, String Subject, String Content) {// 配置发送及接收邮箱
        try {
            Properties props = new Properties();
            props.put("mail.smtp.protocol", "smtp");
            props.put("mail.smtp.auth", "true");//设置要验证
            props.put("mail.smtp.host", "smtp.exmail.qq.com");//设置host
            props.put("mail.smtp.port", "465");  //设置端口
            props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

            PassAuthenticator pass = new PassAuthenticator(fromEmailAddress, fromEmailPassword);   //获取帐号密码
            Session session = Session.getInstance(props, pass); //获取验证会话
            // 始发邮箱
            InternetAddress fromAddress = new InternetAddress(fromEmailAddress, fromEmailAddress);
            // 目标邮箱
            InternetAddress toAddress = new InternetAddress(toEmailAddress, toEmailAddress);
            // 配置发送信息
            MimeMessage message = new MimeMessage(session);
            MimeMultipart allMultipart = new MimeMultipart("mixed"); // 附件
            message.setContent(allMultipart); // 发邮件时添加附件
            message.setSubject(Subject);
            message.setText(Content, "UTF-8");
            message.setFrom(fromAddress);
            message.addRecipient(javax.mail.Message.RecipientType.TO, toAddress);
            message.saveChanges();
            // 连接邮箱并发送
            Transport transport = session.getTransport("smtp");
            // 始发邮箱账号密码
            transport.connect("smtp.exmail.qq.com", fromEmailAddress, fromEmailPassword);
            transport.send(message);
            transport.close();
            return true;
        } catch (Exception e) {
            Log.i("Simon", "sendEmailMessages Exception = " + e.getMessage());
        }
        return false;
    }

    /**
     * 发送邮件-附件
     *
     * @param fromEmailAddress
     * @param fromEmailPassword
     * @param toEmailAddress
     * @param Subject
     * @param Content
     * @param files
     * @return
     */
    public boolean sendEmailMessagesWithFiles(String fromEmailAddress, String fromEmailPassword, String toEmailAddress, String Subject, List<File> files) {
        Properties props = new Properties();
        props.put("mail.smtp.protocol", "smtp");
        props.put("mail.smtp.auth", "true");//设置要验证
        props.put("mail.smtp.host", "smtp.exmail.qq.com");//设置host
        props.put("mail.smtp.port", "465");  //设置端口
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

        PassAuthenticator pass = new PassAuthenticator(fromEmailAddress, fromEmailPassword);   //获取帐号密码
        Session session = Session.getInstance(props, pass); //获取验证会话
        try {
            //配置发送及接收邮箱
            InternetAddress fromAddress, toAddress;
            // 发件邮箱
            fromAddress = new InternetAddress(fromEmailAddress, fromEmailAddress);
            // 收件邮箱
            toAddress = new InternetAddress(toEmailAddress, toEmailAddress);

            // 附件与内容 只能二选一
            MimeMessage message = new MimeMessage(session);
            MimeMultipart allMultipart = new MimeMultipart("mixed"); //附件
            for (File file : files) {
                MimeBodyPart attachPart = new MimeBodyPart();
                FileDataSource fds = new FileDataSource(file); //打开要发送的文件
                attachPart.setDataHandler(new DataHandler(fds));
                attachPart.setFileName(MimeUtility.encodeText(file.getName()));//TODO
                // allMultipart.addBodyPart(attachPart);//添加
            }
            message.setContent(allMultipart); //发邮件时添加附件

            message.setSubject(Subject);
            message.setFrom(fromAddress);
            message.addRecipient(javax.mail.Message.RecipientType.TO, toAddress);
            message.saveChanges();
            // 连接邮箱并发送
            Transport transport = session.getTransport("smtp");
            // 发送邮件的账号和密码
            transport.connect("smtp.exmail.qq.com", fromEmailAddress, fromEmailPassword);
            transport.send(message);
            transport.close();
        } catch (Exception e) {
            Log.i("Simon", "sendEmailMessagesWithFiles Exception = " + e.getMessage());
        }
        return false;
    }

    class PassAuthenticator extends Authenticator {
        String username;
        String password;

        public PassAuthenticator(String username, String password) {
            this.username = username;
            this.password = password;
        }

        public PasswordAuthentication getPasswordAuthentication() {
            // 添加发送邮箱的账号和密码
            return new PasswordAuthentication(username, password);
        }
    }

}


 
上面的EmailUtils工具类直接调用即可,源码地址: DevBySimon-SendEmail
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值