结合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

相关文章

MybatisPlus中几种条件构造器运用方式

《MybatisPlus中几种条件构造器运用方式》QueryWrapper是Mybatis-Plus提供的一个用于构建SQL查询条件的工具类,提供了各种方法如eq、ne、gt、ge、lt、le、lik... 目录版本介绍QueryWrapperLambdaQueryWrapperUpdateWrapperL

idea设置快捷键风格方式

《idea设置快捷键风格方式》在IntelliJIDEA中设置快捷键风格,打开IDEA,进入设置页面,选择Keymap,从Keymaps下拉列表中选择或复制想要的快捷键风格,点击Apply和OK即可使... 目录idea设www.chinasem.cn置快捷键风格按照以下步骤进行总结idea设置快捷键pyth

Linux镜像文件制作方式

《Linux镜像文件制作方式》本文介绍了Linux镜像文件制作的过程,包括确定磁盘空间布局、制作空白镜像文件、分区与格式化、复制引导分区和其他分区... 目录1.确定磁盘空间布局2.制作空白镜像文件3.分区与格式化1) 分区2) 格式化4.复制引导分区5.复制其它分区1) 挂载2) 复制bootfs分区3)

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

SpringBoot返回文件让前端下载的几种方式

《SpringBoot返回文件让前端下载的几种方式》文章介绍了开发中文件下载的两种常见解决方案,并详细描述了通过后端进行下载的原理和步骤,包括一次性读取到内存和分块写入响应输出流两种方法,此外,还提供... 目录01 背景02 一次性读取到内存,通过响应输出流输出到前端02 将文件流通过循环写入到响应输出流

java敏感词过滤的实现方式

《java敏感词过滤的实现方式》文章描述了如何搭建敏感词过滤系统来防御用户生成内容中的违规、广告或恶意言论,包括引入依赖、定义敏感词类、非敏感词类、替换词类和工具类等步骤,并指出资源文件应放在src/... 目录1.引入依赖2.定义自定义敏感词类3.定义自定义非敏感类4.定义自定义替换词类5.最后定义工具类

python项目环境切换的几种实现方式

《python项目环境切换的几种实现方式》本文主要介绍了python项目环境切换的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 如何在不同python项目中,安装不同的依赖2. 如何切换到不同项目的工作空间3.创建项目

SpringBoot的内嵌和外置tomcat的实现方式

《SpringBoot的内嵌和外置tomcat的实现方式》本文主要介绍了在SpringBoot中定制和修改Servlet容器的配置,包括内嵌式和外置式Servlet容器的配置方法,文中通过示例代码介绍... 目录1.内嵌如何定制和修改Servlet容器的相关配置注册Servlet三大组件Servlet注册详

Python结合Free Spire.PDF for Python实现PDF页面旋转

《Python结合FreeSpire.PDFforPython实现PDF页面旋转》在日常办公或文档处理中,我们经常会遇到PDF页面方向错误的问题,本文将分享如何用Python结合FreeSpir... 目录基础实现:单页PDF精准旋转完整代码代码解析进阶操作:覆盖多场景旋转需求1. 旋转指定角度(90/27