首页 > 其他分享 >邮件发送案例流的形式文件不落盘

邮件发送案例流的形式文件不落盘

时间:2024-08-22 10:40:07浏览次数:4  
标签:messageBodyPart List 发送 list add 不落盘 new message 邮件

可以实际使用的

  public static void main(String[] args) {
        // 身份认证
        Session session = authorUser();
        // 收件人电子邮箱
        String from = "邮箱";
        // 发件人电子邮箱
        String to = "邮箱";
        send2User(session, from, to);
    }

    private static Session authorUser() {
        // 获取系统属性
        Properties properties = System.getProperties();
        // 指定发送邮件的主机为 localhost
        String host = "xamail.byd.com";
        // 设置邮件服务器
        properties.setProperty("mail.smtp.host", host);
        properties.put("mail.smtp.port", "25");
        properties.put("mail.smtp.auth", "true");
        // 判断是否需要身份认证 如果需要身份认证,则创建一个密码验证器
        MailAuthenticator authenticator = new MailAuthenticator("邮箱", "123@123");
        // 根据邮件会话属性和密码验证器构造一个发送邮件的session
        Session session = Session.getDefaultInstance(properties, authenticator);
        return session;
    }

    private static void send2User(Session session, String from, String to) {
        try {
            // 创建默认的 MimeMessage 对象
            Message message = new MimeMessage(session);
            // Set From: 头部头字段
            message.setFrom(new InternetAddress(from));
            // Set To: 头部头字段
            message.addRecipient(Message.RecipientType.TO,
                    new InternetAddress(to));
            // Set Subject: 头部头字段
            message.setSubject("某项目数据20240822");
            // Create a multipar message
            Multipart multipart = new MimeMultipart();
            // Create the message part
            BodyPart messageBodyPart = new MimeBodyPart();
            // Fill the message
            messageBodyPart.setText("Message test bym!!!");
            // Set text message part
            multipart.addBodyPart(messageBodyPart);

            // Part two is attachment 附件发送
            messageBodyPart = new MimeBodyPart();

//            方式一发送附件为文件的形式
//            String filename = "D:\\test\\test.txt";
 //            DataSource source = new FileDataSource(filename);
//            messageBodyPart.setDataHandler(new DataHandler(source));
//            messageBodyPart.setFileName("test.txt");

//            方式二、发送附件为流的形式,好处:数据直接查询出来,不落文件
            List<List<String>> head = head();
            List<List<Object>> lists = dataList();
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            EasyExcel.write(bos).sheet("sheet1").head(head).doWrite(lists);
            byte[] array = bos.toByteArray();
            ByteArrayDataSource byteArrayDataSource = new ByteArrayDataSource(array, "application/octet-stream");
            messageBodyPart.setDataHandler(new DataHandler(byteArrayDataSource));
            messageBodyPart.setFileName("test.xlsx");


            multipart.addBodyPart(messageBodyPart);

            // Send the complete message parts
            message.setContent(multipart);
            // 发送消息
            Transport.send(message);
            System.out.println("Sent message successfully....");
        } catch (MessagingException mex) {
            mex.printStackTrace();
        }
    }


    private static List<List<String>> head() {
        List<List<String>> list = com.alibaba.excel.util.ListUtils.newArrayList();
        List<String> head0 = com.alibaba.excel.util.ListUtils.newArrayList();
        head0.add("字符串" + System.currentTimeMillis());
        List<String> head1 = com.alibaba.excel.util.ListUtils.newArrayList();
        head1.add("数字" + System.currentTimeMillis());
        List<String> head2 = com.alibaba.excel.util.ListUtils.newArrayList();
        head2.add("日期" + System.currentTimeMillis());
        list.add(head0);
        list.add(head1);
        list.add(head2);
        return list;
    }

    private static List<List<Object>> dataList() {
        List<List<Object>> list = com.alibaba.excel.util.ListUtils.newArrayList();
        for (int i = 0; i < 10; i++) {
            List<Object> data = com.alibaba.excel.util.ListUtils.newArrayList();
            data.add("字符串" + i);
            data.add(0.56);
            data.add(new Date());
            list.add(data);
        }
        return list;
    }


标签:messageBodyPart,List,发送,list,add,不落盘,new,message,邮件
From: https://www.cnblogs.com/hbym/p/18373316

相关文章

  • 【RTT-Studio】详细使用教程十三:UART的DMA 接收及轮询发送
    文章目录一、简介二、RTT配置三、使用信号量接收四、使用消息队列接收五、测试验证一、简介  串口是指数据一位一位地顺序传送,其特点是通讯线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速......
  • http实现form表单带CSV附件上传,数据不落盘实现方式
    以往的印象里面,实现附件上传需要有附件在磁盘里面存在(可能是见识浅薄),想着怎么去优化一下,避免落盘,就引入了这种方式,实现很容易,只是没有实践过,实践导致认知限制<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</arti......
  • svnhook---用户提交后,解析用户的提交信息,发送到企业微信机器人
    一:第一篇写到了在用户提交时做检测,不允许不填写提交日志和特定的信息,感兴趣的可以查看  https://www.cnblogs.com/a565810497/p/18369876二:现在来写一个用户成功提交后,我们拿到svn的提交日志,通过企业微信机器人发送到群组里三:下面是具体操作先复制一个脚本,去掉tmpl后缀,并且......
  • tcp与udp的总结+connect阻塞+tcp三次握手、四次挥手+常见的服务器IO(发送数据+接收数
    一,TCP与UDP的基本总结TCP(传输控制协议)和UDP(用户数据报协议)是两种主要的传输层协议。TCP是面向连接的,提供可靠、顺序的传输,适用于需要高可靠性的应用,如网页浏览和文件传输。它通过重传机制和流量控制确保数据完整性。UDP是无连接的,速度快但不保证数据的可靠性和顺序,适用于对实时性......
  • [开源&分享]一个用于单片机IAP自动发送的串口助手,上位机,使用Python+tkinter制作
    使用Python+tkinter制作。功能:这是个给单片机通过串口进行IAP的上位机,与单片机中的BOOT程序配合使用,完成对单片机APP程序的升级。可以完成bin文件的切片,CRC校验(使用Crc32Mpeg2),打包自动发送。界面如下图所示:接收区是显示信息的区域,接收和发送的信息都在这显示串口配置区域......
  • CANoe_UDS-boorloader 自动化测试系列(二)基本功能:CAPL实现UDS协议下的CAN报文接收#解析
    目录一、前言二、CAPL实现1、报文接收接收报文函数:2、报文发送发送报文函数:三、总结展望一、前言halle,大家好,我是小鸟鹏。上篇文章《CANoe_UDS-boorloader自动测试系列(二)基本刷写流程》简单介绍了整Bootloader的基本刷写流程,包括具体使用哪些服务实现哪些功能,对......
  • Python向IP地址发送字符串
    在Python中,向IP地址发送字符串通常意味着你需要通过某种协议来实现通信。最常见的协议包括TCP和UDP。这里,我将分别给出使用TCP和UDP协议向指定IP地址发送字符串的示例代码。1.TCP、UDP协议——示例一1.1使用TCP协议TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协......
  • skynet的消息发送:send和call
    skynet是一个轻量级的游戏服务器框架。skynet的核心是服务,服务之间通过消息来通信,消息的来源主要有:定时器网络服务之间的调用(skynet.send或skynet.call)skynet.send和skynet.call假设我们有两个服务A和B,A发了两条消息给B:这里skynet.send和skynet.call的主要区别,在于c......
  • RabbitMQ实现消息可靠性的三种方法(发送者可靠性,MQ可靠性,消费者可靠性)
    1.发送者可靠性1.1发送者重连RabbitMQ的发送者重连机制是一种应对网络不稳定或连接中断情况的策略,它能够自动尝试重新建立与RabbitMQ服务器的连接,以确保消息能够成功发送。发送者重连通常涉及到一些配置参数,如连接超时时间、重试间隔、最大重试次数等。例如,在Spring框架的......
  • BackgroundWorker和BlockingCollection配合实现有消息才发送的队列
    privateBackgroundWorkerm_MessageConsumer=newBackgroundWorker();privateBlockingCollection<string>m_BlockingQueue=newBlockingCollection<string>();构造函数{m_MessageConsumer.DoWork+=M_MessageConsumer_DoWork;m_MessageConsumer.Work......