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

相关文章

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

gradle第三方Jar包依赖统一管理方式

《gradle第三方Jar包依赖统一管理方式》:本文主要介绍gradle第三方Jar包依赖统一管理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景实现1.顶层模块build.gradle添加依赖管理插件2.顶层模块build.gradle添加所有管理依赖包

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

Spring Boot读取配置文件的五种方式小结

《SpringBoot读取配置文件的五种方式小结》SpringBoot提供了灵活多样的方式来读取配置文件,这篇文章为大家介绍了5种常见的读取方式,文中的示例代码简洁易懂,大家可以根据自己的需要进... 目录1. 配置文件位置与加载顺序2. 读取配置文件的方式汇总方式一:使用 @Value 注解读取配置方式二

JAVA保证HashMap线程安全的几种方式

《JAVA保证HashMap线程安全的几种方式》HashMap是线程不安全的,这意味着如果多个线程并发地访问和修改同一个HashMap实例,可能会导致数据不一致和其他线程安全问题,本文主要介绍了JAV... 目录1. 使用 Collections.synchronizedMap2. 使用 Concurren