`
crazywen2011
  • 浏览: 40180 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

    博客分类:
  • Web
阅读更多

结合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 见附件!

1
2
分享到:
评论

相关推荐

    java生成条形码

    4. **生成条形码图像**:调用库提供的API生成条形码,并将其保存为图像文件或嵌入到PDF文档中。 5. **测试与优化**:确保生成的条形码能被扫描设备正确读取,并对生成过程进行优化。 #### 知识点二:具体实现细节 ...

    c#生成条形码与二维码控件(附件包含代码)

    在IT领域,生成条形码和二维码是常见的数据表示和识别技术,广泛应用于物流、零售、仓储等行业。C#作为.NET框架的主要编程语言,提供了丰富的库来实现这些功能。本篇将详细介绍C#中生成条形码和二维码的控件及其相关...

    生成一维码二维码并调用打印机打印

    生成一维码的过程涉及编码规则的理解,将数字转换为特定的条形码格式。在编程中,可以使用各种库,例如Python的`py-barcode`库,来生成一维码图像,然后将其保存或直接输出到打印机。 二维码,如QR码,是一种二维的...

    thinkPHP框架实现生成条形码的方法示例

    本文通过实例讲解了如何在ThinkPHP框架下使用第三方barcode类库来生成条形码,并提供了相关的代码示例和技巧。 首先,需要下载并引入第三方的barcode类库。这个类库提供了生成条形码所需的各类方法和属性。在此基础...

    uni-app-barcode:uni-app 条形码生成器

    uni-app 条形码生成器 作者:诗小柒 支持H5、微信小程序、APP,其它平台的没有测试 使用canvas生成 不懂如何使用可以去直接打包下载运行 说明 此条形码组件的条形码生成部分移植改造自,精简了代码,移除无效属性,...

    ZXing的精简版,优化扫码和生成二维码/条形码,内置闪光灯等功能。扫描风格支持:微信的线条,博客附件,效果请查看博客相对应项目

    ZXingLite在保留核心功能的同时,减少了对资源的依赖,使其更适合在Android应用中快速集成扫码和生成二维码/条形码的功能。 1. **扫码功能优化** ZXingLite对原始的ZXing进行了优化,提升了扫码速度和准确性。它...

    BGAQRCode-Android:QRCode 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式

    根据的产品需求,参考 改的,希望能帮助到有生成二维码、扫描二维码、识别图片二维码等需求的猿友。修改幅度较大,也就没准备针对 库提交PR。 可定制各式各样的扫描框 可定制全屏扫描或只识别扫描框区域内码 可...

    pb生成二维码打印实例

    方法一: 在数据窗口中 加一图片 picture object, 名为: p_barcode, 在tag属性中填上 条码列的 colname 例如条码值为:配药单号 execnote_num 在数据窗口 dw_zss2_printtpd 中数据源中增加 op_execnote.execnote_...

    openmv4扫码识别代码

    openmv4扫码识别 主要识别:条形码、二维码、矩形...可以用这个网站生成条形码:http://barcode.tec-it.com/zh/Code128?data=OpenMV 代码见附件 二维码: 可以用草料二维码生成你想要的内容:http://cli.im/ 代码见附件

    ZXing.Net:原始的基于Java的条形码读取器和生成器库的.Net端口Zxing

    一个支持在图像内解码和生成条形码(例如QR码,PDF 417,EAN,UPC,Aztec,Data Matrix,Codabar)的库。 该项目是基于Java的条形码读取器和生成器库ZXing的端口。 它是经过手工移植的,具有许多优化和改进功能。 ...

    java开源包5

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包4

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包1

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包11

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包2

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包3

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包6

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包10

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包8

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包7

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

Global site tag (gtag.js) - Google Analytics