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 发送邮件 带附件或者表格

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • docker 镜像导入导出_docker常用镜像

    docker 镜像导入导出_docker常用镜像将本机的镜像导出到压缩包,使用save和load进行导入和导出查看镜像列表dockerimages导出镜像dockersave0fdf2b4c26d3>images.tar同时导出多个dockersave-oimages.tarelastest/etm:2.4.0elastest/etm-jenkins:1.2.0导入镜像dockerload<images.tar…

  • ZigBee开发环境搭建[通俗易懂]

    1、IAREmbeddedWorkbench的安装  Step1、双击安装程序,进行安装   Step2、一直采用默认NEXT,直到点击Accept之后:   Step3、关键:双击打开文件IARkegenPartA.exe. Win7、8用户请右键以管理员身份打开 Step4、点击Generate

  • pycharm配置anaconda环境后不能运行无法run_anaconda添加环境变量

    pycharm配置anaconda环境后不能运行无法run_anaconda添加环境变量概述在上节介绍了anaconda管理python环境,而Pycharm作为主流pythonIDE,两者配合使用才算完美。配置File-Setting-ProjectInterpreter贴图:可以看到当前环境下安装的包之类的,管理起来也是很清爽。转载于:https://www.cnblogs.com/mliangchen/p/9939844.html…

  • sublime text2 安装及使用教程

    sublime text2 安装及使用教程1.下载安装包地址:https://www.sublimetext.com/22.安装,一直点下一步就好,将下列选项打钩,这样文件右键就可以直接用sublimetext2打开3.新建一个html

  • Eureka集群配置

    Eureka集群配置eureka作为注册中心,生产环境必须多节点部署,保证其高可用性。现以两台服务器来完成集群部署。服务器A:172.16.21.34服务器B:172.16.21.35方式一:使用ip形式完成。服务器A:172.16.21.34server:port:7777spring:application:name:register#指定eureka客户端的登录账户security:user:…

  • IDEA之汉化篇

    IDEA之汉化篇不懂英语的孩子idea汉化`最后还是建议使用英文,因为别人的电脑一般都是英文,少不了需要交流`idea汉化**idea**几乎被称为最好用的编程软件但是不懂英语的你是不是有点吃不消福利来了下载中文字体&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//有中文字体的同学略过步骤

发表回复

您的电子邮箱地址不会被公开。

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