结合barcode4j生成条形码 并图片以附件的方式发送出去
见以下代码:
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.annotation.Resource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import javax.mail.util.ByteArrayDataSource;
import org.krysalis.barcode4j.impl.code39.Code39Bean;
import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
import org.krysalis.barcode4j.tools.UnitConv;
public void sendEmailModel() {
Session m_SmtpSession;
String m_SmtpHost = null;
String m_SmtpUsername = null;
String m_SmtpPassword = null;
Properties props = new Properties();
// 设置mail服务器
props.put("mail.smtp.host", m_SmtpHost);
props.put("mail.smtp.auth", "true");
// Get session
m_SmtpSession = Session.getDefaultInstance(props);
// watch the mail commands go by to the mail server
m_SmtpSession.setDebug(false);
try {
// Create the barcode bean 条形码生成
Code39Bean bean = new Code39Bean();
final int dpi = 150;
// Configure the barcode generator
bean.setModuleWidth(UnitConv.in2mm(1.0f / dpi));
// makes the narrow bar width exactly one pixel
bean.setWideFactor(3);
bean.doQuietZone(false);
ByteArrayOutputStream out = new ByteArrayOutputStream();
BitmapCanvasProvider canvas = new BitmapCanvasProvider(out, "image/jpeg", dpi,
BufferedImage.TYPE_BYTE_BINARY, true, 0);
// Generate the barcode
bean.generateBarcode(canvas, "条形源码");
// Signal end of generation
canvas.finish();
// 邮件生成
MimeMessage msg = new MimeMessage(m_SmtpSession);
// 发送源
msg.setFrom(new InternetAddress("xxx@163.com"));
// 此处可以发送多个地址
InternetAddress[] tos = new InternetAddress[1];
tos[0] = new InternetAddress("to@163.com");
msg.addRecipients(Message.RecipientType.TO, tos);
msg.setSubject("主题", "utf-8");
// 使用Multipart发送邮件
Multipart multipart = new MimeMultipart();
// 正文内容
MimeBodyPart part = new MimeBodyPart();
part.setContent("正文如下:<br/>条形码如下:<br/><img src='cid:barcode.jpg'/>",
"text/html; charset=utf-8");
multipart.addBodyPart(part);
// 附件
part = new MimeBodyPart();
ByteArrayDataSource ds = new ByteArrayDataSource(out.toByteArray(),
"application/octet-stream");
out.close();// 关闭流
// 加入附件
part.setDataHandler(new DataHandler(ds));
// setHeader 目的是 可以在源码中使用barcode.jpg图片 ,如下: src='cid:barcode.jpg'
part.setHeader("Content-ID", "barcode.jpg");
ds.setName("barcode.jpg");
part.setFileName(MimeUtility.encodeText(ds.getName()));
multipart.addBodyPart(part);
msg.setContent(multipart);
msg.saveChanges();
Transport transport;
// 协议 protocol
transport = m_SmtpSession.getTransport("smtp");
transport.connect(m_SmtpHost, m_SmtpUsername, m_SmtpPassword);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
} catch (IOException e) {
e.printStackTrace();
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
barcode4j.jar 见附件!
分享到:
相关推荐
4. **生成条形码图像**:调用库提供的API生成条形码,并将其保存为图像文件或嵌入到PDF文档中。 5. **测试与优化**:确保生成的条形码能被扫描设备正确读取,并对生成过程进行优化。 #### 知识点二:具体实现细节 ...
在IT领域,生成条形码和二维码是常见的数据表示和识别技术,广泛应用于物流、零售、仓储等行业。C#作为.NET框架的主要编程语言,提供了丰富的库来实现这些功能。本篇将详细介绍C#中生成条形码和二维码的控件及其相关...
生成一维码的过程涉及编码规则的理解,将数字转换为特定的条形码格式。在编程中,可以使用各种库,例如Python的`py-barcode`库,来生成一维码图像,然后将其保存或直接输出到打印机。 二维码,如QR码,是一种二维的...
本文通过实例讲解了如何在ThinkPHP框架下使用第三方barcode类库来生成条形码,并提供了相关的代码示例和技巧。 首先,需要下载并引入第三方的barcode类库。这个类库提供了生成条形码所需的各类方法和属性。在此基础...
uni-app 条形码生成器 作者:诗小柒 支持H5、微信小程序、APP,其它平台的没有测试 使用canvas生成 不懂如何使用可以去直接打包下载运行 说明 此条形码组件的条形码生成部分移植改造自,精简了代码,移除无效属性,...
ZXingLite在保留核心功能的同时,减少了对资源的依赖,使其更适合在Android应用中快速集成扫码和生成二维码/条形码的功能。 1. **扫码功能优化** ZXingLite对原始的ZXing进行了优化,提升了扫码速度和准确性。它...
根据的产品需求,参考 改的,希望能帮助到有生成二维码、扫描二维码、识别图片二维码等需求的猿友。修改幅度较大,也就没准备针对 库提交PR。 可定制各式各样的扫描框 可定制全屏扫描或只识别扫描框区域内码 可...
方法一: 在数据窗口中 加一图片 picture object, 名为: p_barcode, 在tag属性中填上 条码列的 colname 例如条码值为:配药单号 execnote_num 在数据窗口 dw_zss2_printtpd 中数据源中增加 op_execnote.execnote_...
openmv4扫码识别 主要识别:条形码、二维码、矩形...可以用这个网站生成条形码:http://barcode.tec-it.com/zh/Code128?data=OpenMV 代码见附件 二维码: 可以用草料二维码生成你想要的内容:http://cli.im/ 代码见附件
一个支持在图像内解码和生成条形码(例如QR码,PDF 417,EAN,UPC,Aztec,Data Matrix,Codabar)的库。 该项目是基于Java的条形码读取器和生成器库ZXing的端口。 它是经过手工移植的,具有许多优化和改进功能。 ...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...