结合barcode4j生成条形码 图片以附件的方式发送出去

2024-01-28 11:38

本文主要是介绍结合barcode4j生成条形码 图片以附件的方式发送出去,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

结合barcode4j生成条形码 并图片以附件的方式发送出去

见以下代码:

Java代码   收藏代码
  1. import java.awt.image.BufferedImage;  
  2. import java.io.ByteArrayOutputStream;  
  3. import java.io.IOException;  
  4. import java.io.UnsupportedEncodingException;  
  5. import java.util.List;  
  6. import java.util.Properties;  
  7.   
  8. import javax.activation.DataHandler;  
  9. import javax.annotation.Resource;  
  10. import javax.mail.Message;  
  11. import javax.mail.MessagingException;  
  12. import javax.mail.Multipart;  
  13. import javax.mail.Session;  
  14. import javax.mail.Transport;  
  15. import javax.mail.internet.AddressException;  
  16. import javax.mail.internet.InternetAddress;  
  17. import javax.mail.internet.MimeBodyPart;  
  18. import javax.mail.internet.MimeMessage;  
  19. import javax.mail.internet.MimeMultipart;  
  20. import javax.mail.internet.MimeUtility;  
  21. import javax.mail.util.ByteArrayDataSource;  
  22.   
  23. import org.krysalis.barcode4j.impl.code39.Code39Bean;  
  24. import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;  
  25. import org.krysalis.barcode4j.tools.UnitConv;  
  26.   
  27. public void sendEmailModel() {  
  28.         Session m_SmtpSession;  
  29.         String m_SmtpHost = null;  
  30.         String m_SmtpUsername = null;  
  31.         String m_SmtpPassword = null;  
  32.         Properties props = new Properties();  
  33.         // 设置mail服务器  
  34.         props.put("mail.smtp.host", m_SmtpHost);  
  35.         props.put("mail.smtp.auth""true");  
  36.         // Get session  
  37.         m_SmtpSession = Session.getDefaultInstance(props);  
  38.         // watch the mail commands go by to the mail server  
  39.         m_SmtpSession.setDebug(false);  
  40.         try {  
  41.             // Create the barcode bean 条形码生成  
  42.             Code39Bean bean = new Code39Bean();  
  43.             final int dpi = 150;  
  44.             // Configure the barcode generator  
  45.             bean.setModuleWidth(UnitConv.in2mm(1.0f / dpi));  
  46.             // makes the narrow bar width exactly one pixel  
  47.             bean.setWideFactor(3);  
  48.             bean.doQuietZone(false);  
  49.             ByteArrayOutputStream out = new ByteArrayOutputStream();  
  50.             BitmapCanvasProvider canvas = new BitmapCanvasProvider(out, "image/jpeg", dpi,  
  51.                     BufferedImage.TYPE_BYTE_BINARY, true0);  
  52.             // Generate the barcode  
  53.             bean.generateBarcode(canvas, "条形源码");  
  54.             // Signal end of generation  
  55.             canvas.finish();  
  56.             // 邮件生成  
  57.             MimeMessage msg = new MimeMessage(m_SmtpSession);  
  58.             // 发送源  
  59.             msg.setFrom(new InternetAddress("xxx@163.com"));  
  60.             // 此处可以发送多个地址  
  61.             InternetAddress[] tos = new InternetAddress[1];  
  62.             tos[0] = new InternetAddress("to@163.com");  
  63.             msg.addRecipients(Message.RecipientType.TO, tos);  
  64.             msg.setSubject("主题""utf-8");  
  65.             // 使用Multipart发送邮件  
  66.             Multipart multipart = new MimeMultipart();  
  67.             // 正文内容  
  68.             MimeBodyPart part = new MimeBodyPart();  
  69.             part.setContent("正文如下:<br/>条形码如下:<br/><img src='cid:barcode.jpg'/>",  
  70.                     "text/html; charset=utf-8");  
  71.             multipart.addBodyPart(part);  
  72.             // 附件  
  73.             part = new MimeBodyPart();  
  74.             ByteArrayDataSource ds = new ByteArrayDataSource(out.toByteArray(),  
  75.                     "application/octet-stream");  
  76.             out.close();// 关闭流  
  77.             // 加入附件  
  78.             part.setDataHandler(new DataHandler(ds));  
  79.             // setHeader 目的是 可以在源码中使用barcode.jpg图片 ,如下: src='cid:barcode.jpg'  
  80.             part.setHeader("Content-ID""barcode.jpg");  
  81.             ds.setName("barcode.jpg");  
  82.             part.setFileName(MimeUtility.encodeText(ds.getName()));  
  83.             multipart.addBodyPart(part);  
  84.             msg.setContent(multipart);  
  85.             msg.saveChanges();  
  86.             Transport transport;  
  87.             // 协议 protocol  
  88.             transport = m_SmtpSession.getTransport("smtp");  
  89.             transport.connect(m_SmtpHost, m_SmtpUsername, m_SmtpPassword);  
  90.             transport.sendMessage(msg, msg.getAllRecipients());  
  91.             transport.close();  
  92.         } catch (IOException e) {  
  93.             e.printStackTrace();  
  94.         } catch (AddressException e) {  
  95.             e.printStackTrace();  
  96.         } catch (MessagingException e) {  
  97.             e.printStackTrace();  
  98.         }  
  99.     }  

 

这篇关于结合barcode4j生成条形码 图片以附件的方式发送出去的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/653532

相关文章

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

Mybatis的分页实现方式

《Mybatis的分页实现方式》MyBatis的分页实现方式主要有以下几种,每种方式适用于不同的场景,且在性能、灵活性和代码侵入性上有所差异,对Mybatis的分页实现方式感兴趣的朋友一起看看吧... 目录​1. 原生 SQL 分页(物理分页)​​2. RowBounds 分页(逻辑分页)​​3. Page

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与