java 发送邮件 带附件或者表格

java 发送邮件 带附件或者表格packagecom.sub.utils;importjavax.activation.DataHandler;importjavax.activation.DataSource;importjavax.activation.FileDataSource;importjavax.mail.*;importjavax.mail.internet.*;importjava…

大家好,又见面了,我是你们的朋友全栈君。

package com.sub.utils;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.List;
import java.util.Properties;

public class MailUtil implements Runnable {
    private String email;// 收件人邮箱
    private String content;//内容
    private String filename;//附件
    private String subject;//主题
    private Boolean ishtml;//是否为html代码

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getFilename() {
        return filename;
    }

    public void setFilename(String filename) {
        this.filename = filename;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public Boolean getIshtml() {
        return ishtml;
    }

    public void setIshtml(Boolean ishtml) {
        this.ishtml = ishtml;
    }

    public MailUtil(Builder builder) {
        this.content = builder.content;
        this.filename = builder.filename;
        this.subject = builder.subject;
        this.email = builder.email;
        this.ishtml = builder.ishtml;
    }

    public static class Builder{
        private String email;// 收件人邮箱
        private String content="";//内容
        private String filename=null;//附件
        private String subject="这是邮件";//主题
        private Boolean ishtml = false;//是否为html代码

        public Builder setContent(String content_b){
            this.content = content_b;
            return this;
        }
        public Builder setFilename(String filename_b){
            this.filename = filename_b;
            return this;
        }
        public Builder setSubject(String subject_b){
            this.subject = subject_b;
            return this;
        }
        public Builder isHtml(){
            this.ishtml = true;
            return this;
        }

        public MailUtil buildWithEmail(String email_b) {
            this.email = email_b;
            return new MailUtil(this);
        }
    }



    public void run() {

        String from = "******";// 发件人电子邮箱
        String host = "smtp.ym.163.com"; // 指定发送邮件的主机
        Properties properties = System.getProperties();// 获取系统属性
        properties.setProperty("mail.transport.protocol", "smtp");
        properties.setProperty("mail.smtp.host", host);// 设置邮件服务器
        properties.setProperty("mail.smtp.auth", "true");// 打开认证
 
        try {
            //QQ邮箱需要下面这段代码,163邮箱不需要
//            MailSSLSocketFactory sf = new MailSSLSocketFactory();
//            sf.setTrustAllHosts(true);
//            properties.put("mail.smtp.ssl.enable", "true");
//            properties.put("mail.smtp.ssl.socketFactory", sf);

            //获取默认session对象
            Session session = Session.getDefaultInstance(properties, new Authenticator() {
                public PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("****", "****"); // 发件人邮箱账号、授权码
                }
            });
 
            // 创建邮件对象
            Message message = new MimeMessage(session);
            // 设置发件人
            message.setFrom(new InternetAddress(from));
            // 设置接收人
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
            // 设置邮件主题
            message.setSubject(subject);
            // 创建消息部分
            BodyPart messageBodyPart = new MimeBodyPart();
            // 消息
            if (ishtml){
                messageBodyPart.setContent(content,"text/html;charset=UTF-8");
            }else {
                messageBodyPart.setText(content);
            }
            // 创建多重消息
            Multipart multipart = new MimeMultipart();
            // 设置文本消息部分
            multipart.addBodyPart(messageBodyPart);
            // 附件部分
            if (filename!=null){
                BodyPart messageAttachmentPart = new MimeBodyPart();
                DataSource source = new FileDataSource(filename);
                messageAttachmentPart.setDataHandler(new DataHandler(source));
                messageAttachmentPart.setFileName(filename);
                multipart.addBodyPart(messageAttachmentPart);
            }
            message.setContent(multipart);
            // 发送邮件
            Transport.send(message);
        } catch (Exception e) {
            e.printStackTrace();
            LogUtil.error("邮件发送失败"+subject,e);
        }
    }

    public static StringBuilder
    getTableStart(String head[],String title){

        StringBuilder table=new StringBuilder();
        table.append("    <html>");
        table.append("     <head>");
        table.append("      <title> New Document </title>");
        table.append("     </head>");
        table.append("    ");
        table.append("    <style type=\"text/css\">");
        table.append("    table { ");
        table.append("      margin: 10px 0 30px 0;");
        table.append("      font-size: 13px;");
        table.append("    }");
        table.append("    ");
        table.append("    table caption { ");
        table.append("      text-align:left;");
        table.append("    }");
        table.append("    ");
        table.append("    table tr th { ");
        table.append("      background: #3B3B3B;");
        table.append("      color: #FFF;");
        table.append("      padding: 7px 4px;");
        table.append("      text-align: left;");
        table.append("    }");
        table.append("    ");
        table.append("    table tr td { ");
        table.append("      color: #FFF;");
        table.append("      padding: 7px 4px;");
        table.append("      text-align: left;");
        table.append("    }");
        table.append("    ");
        table.append("    table tr.odd{");
        table.append("        background-color:#cef;");
        table.append("    }");
        table.append("    ");
        table.append("    table tr.even{");
        table.append("        background-color:#ffc;");
        table.append("    }");
        table.append("      ");
        table.append("    table tr td { ");
        table.append("      color: #47433F;");
        table.append("      border-top: 1px solid #FFF;");
        table.append("    }");
        table.append("     </style>");
        table.append("    ");
        table.append("     <body>");
        table.append("<h2>"+title+"<h2/>");
        table.append("    <table style=\"width:500px; border-spacing:0;\">  ");
        table.append("       <tr>  ");
        for (int i=0;i<head.length;i++){
            table.append("          <th>"+head[i]+"</th>  ");
        }
        table.append("       </tr>  ");
        return table;
    }
    public static StringBuilder getTableEnd(StringBuilder table) {
        table.append("    </table> ");
        table.append("     </body>");
        table.append("    </html>");
        return table;
    }
}

测试

package com.sub.utils;

import com.sub.model.Employee;

import java.util.ArrayList;
import java.util.List;

public class Test {

	@org.junit.Test
	public void start(){

		String head[] = {"账号","密码"};
		List<Employee> employees = new ArrayList<Employee>(2);
		Employee employee = new Employee();
		employee.setName("小明");
		employee.setPassword("123");
		employees.add(employee);
		employee.setName("小张");
		employee.setPassword("456");
		employees.add(employee);


		StringBuilder tableStart = MailUtil.getTableStart(head,"账号密码");
		for (int i=0;i<employees.size();i++){
			String tr = "<tr class=\"odd\">";
			if (i%2==1){
				tr = "<tr class=\"even\">";
			}
			tableStart.append("     "+tr+"    ");
			tableStart.append("         <td>"+employees.get(i).getName()+"</td>  ");
			tableStart.append("         <td>"+employees.get(i).getPassword()+"</td>  ");
			tableStart.append("       </tr>  ");
		}
		StringBuilder table = MailUtil.getTableEnd(tableStart);
		MailUtil mail = new MailUtil.Builder()
				.setContent(table.toString())
				.isHtml()
        //      .setFilename("") 附件路径
				.buildWithEmail("*****");//收件人邮箱
        mail.run();
	}

}

接收到的邮件

java 发送邮件 带附件或者表格

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146672.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • HttpCanary下载_网页自我介绍模板

    HttpCanary下载_网页自我介绍模板前言首先,我们无论学习哪个框架,都要带着问题,带着思考去学习思考1:HttpRunner是什么?思考2:HttpRunner的设计模式是什么?思考3:为什么我们要学习HttpRunner?他的

    2022年7月29日
  • “人脸识别”事故频发,“猪脸识别”却很靠谱!阿里巴巴赌对了

    “人脸识别”事故频发,“猪脸识别”却很靠谱!阿里巴巴赌对了伴随着科技的发展,大家开始逐渐重视自己的隐私,对于“人脸识别”这一新兴技术也抱有很多的质疑,而且“人脸识别”事故频发,被他人盗用的风险目前还是极大的。现在的人脸识别在认证时大多会让用户做一些点头、摇头、张嘴、眨眼等等动作,这样一来,就避免了有人用照片来滥竽充数,但是没想到,还是被有心人利用起来,直接激活成功教程,甚至用于借贷等等不法行为。说起来这一项技术在支付宝的使用情况目前已经非常广泛,只需要看着屏幕就能“刷脸支付”,不再需要扫码转账,手机信号差等等情况也可以避免,但面对种种事故,用户还是心有余悸。

    2022年6月21日
  • #pragma region、{}

    #pragma region、{}

    2021年11月19日
  • autodock分子对接结果分析_分子对接公司

    autodock分子对接结果分析_分子对接公司分子对接#一、题目要求自己寻找一个受体+药物分子复合物体系(不同配体结合3-4个),然后拿复合物结构作为起始,做对接实验。软件自选,Dock,AutoDock…二、操作过程记录及结果1、软件下载与安装AutoDock下载安装进入AutoDock官网下载安装http://autodock.scripps.edu/downloads/autodock-r…

    2022年9月11日
  • 最强内存稳定性测试软件,内存稳定性测试软件TM5「建议收藏」

    最强内存稳定性测试软件,内存稳定性测试软件TM5「建议收藏」内存稳定性测试软件TM5是一款非常好用的内存超频软件,内存稳定性测试速度快,我个人一般跑3圈没有报错就行了,使用简单,直接打开软件自动运行,有需要的朋友赶紧下载试试吧。软件说明;在Cycle达到4时一般就可以停止测试了,想更稳的可以测试更长时间个人在Error出现错误后,就会重新调整内存参数(1,2个错误有时候可能是由温度引起的)测试毕竟不是绝对的,日常正常使用不会出现问题即可使用方法:1下载T…

    2022年9月9日
  • muduo网络库使用心得

    muduo网络库使用心得

    2021年12月9日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号