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

利用Javamail写eml文件

阅读更多
原文:http://www.java-cn.com/club/html/72/n-572.html


import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.Properties;
import java.util.Vector;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
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 org.springframework.util.StringUtils;

/**
 * 利用Javamail写eml文件
 */
public class EmailFileWriter {
	// 定义发件人、收件人、SMTP服务器、用户名、密码、主题、内容等
	private String displayName;

	private String from;

	private String to;

	private String cc;

	private String bcc;

	private String server;

	private String subject;

	private String content;
	/**
	 * 用于保存发送附件的文件名的集合(<code>new String[]{文件名,显示名称}</code>)
	 */
	private Vector<String[]> attachList = new Vector<String[]>();

	private String contentType = "text/html";

	private String charset = "utf-8";

	private int port = 25;

	private Date sentDate;

	public EmailFileWriter() {

	}

	/**
	 * 用于保存发送附件的文件名的集合(<code>new String[]{文件名,显示名称}</code>)
	 */
	public void addFile(String[] filename) {
		attachList.add(filename);
	}

	public String getContentType() {
		return contentType;
	}

	public void setContentType(String contentType) {
		this.contentType = contentType;
	}

	public String getCharset() {
		return charset;
	}

	public void setCharset(String charset) {
		this.charset = charset;
	}

	/**
	 * 设置SMTP服务器地址
	 */
	public void setServer(String smtpServer) {
		this.server = smtpServer;
	}

	/**
	 * 设置发件人的地址
	 */
	public void setFrom(String from) {
		this.from = from;
	}

	/**
	 * 设置显示的名称
	 */
	public void setDisplayName(String displayName) {
		this.displayName = displayName;
	}

	/**
	 * 设置接收者
	 */
	public void setTo(String to) {
		this.to = to;
	}

	public String getCc() {
		return cc;
	}

	public void setCc(String cc) {
		this.cc = cc;
	}

	public String getBcc() {
		return bcc;
	}

	public void setBcc(String bcc) {
		this.bcc = bcc;
	}

	/**
	 * 设置主题
	 */
	public void setSubject(String subject) {
		this.subject = subject;
	}

	/**
	 * 设置主体内容
	 */
	public void setContent(String content) {
		this.content = content;
	}

	public Date getSentDate() {
		return sentDate;
	}

	public void setSentDate(Date sentDate) {
		this.sentDate = sentDate;
	}

	public int getPort() {
		return port;
	}

	public void setPort(int port) {
		this.port = port;
	}

	/**
	 * 将email写至文件
	 * 
	 * @throws IOException
	 * @throws FileNotFoundException
	 * @throws MessagingException
	 */
	public void writeTo(String filename) throws FileNotFoundException,
			IOException, MessagingException {
		Properties props = System.getProperties();
		props.put("mail.smtp.host", server);
		props.put("mail.smtp.port", port);
		props.put("mail.smtp.auth", "false");

		Session session = Session.getDefaultInstance(props, null);
		session.setDebug(false);

		Message msg = new MimeMessage(session);
		Address from_address = new InternetAddress(from, displayName);
		msg.setFrom(from_address);

		InternetAddress[] addressTo = { new InternetAddress(to) };
		msg.setRecipients(Message.RecipientType.TO, addressTo);

		if (StringUtils.hasLength(cc)) {
			InternetAddress[] addressCc = { new InternetAddress(cc) };
			msg.setRecipients(Message.RecipientType.CC, addressCc);
		}

		if (StringUtils.hasLength(bcc)) {
			InternetAddress[] addressBcc = { new InternetAddress(bcc) };
			msg.setRecipients(Message.RecipientType.BCC, addressBcc);
		}

		msg.setSubject(subject);
		Multipart mp = new MimeMultipart();
		MimeBodyPart mbp = new MimeBodyPart();
		mbp.setContent(content.toString(), getContentType() + "; charset="
				+ getCharset());
		mp.addBodyPart(mbp);
		if (!attachList.isEmpty()) {// 有附件
			for (String[] file : attachList) {
				mbp = new MimeBodyPart();
				FileDataSource fds = new FileDataSource(file[0]); // 得到数据源
				mbp.setDataHandler(new DataHandler(fds)); // 得到附件本身并至入BodyPart
				String dspName = file.length < 2 ? fds.getName() : file[1];
				mbp.setFileName(MimeUtility.encodeText(dspName, getCharset(),
						"B")); // 得到文件名同样至入BodyPart
				mp.addBodyPart(mbp);
			}
			attachList.removeAllElements();
		}
		msg.setContent(mp); // Multipart加入到信件
		msg.setSentDate(getSentDate()); // 设置信件头的发送日期
		msg.saveChanges();
		// 写至文件
		msg.writeTo(new FileOutputStream(new File(filename)));
	}
}

分享到:
评论

相关推荐

    邮件解析组包

    在Java中,我们可以利用开源库如JavaMail API来处理eml文件。JavaMail API提供了丰富的接口和类,使得我们能够读取、创建和修改邮件。解析eml文件时,我们需要使用`MimeMessage`类,它能解析MIME格式的邮件,包括eml...

    13_传智播客张孝祥java邮件开发_如何直接发送一封现有的邮件文件.rar

    总结来说,这个教程将涵盖JavaMail API的基本用法,包括SMTP服务器配置、`MimeMessage`的使用、EML文件的读取以及邮件的发送。通过学习这些内容,开发者将能够熟练地在Java程序中实现邮件的发送功能,无论是简单的...

    电子邮件客户端软件

    在Java中,我们可以利用其强大的类库和网络处理能力来实现邮件协议,如SMTP(简单邮件传输协议)用于发送邮件,POP3(邮局协议)和IMAP(因特网消息访问协议)用于接收邮件。 1. JavaMail API:在Java中开发电子...

    mailGraphViz

    7. **数据输入与输出**:项目可能支持多种邮件数据格式,如EML、MBOX或MSG,并且能够将生成的图形保存为图像文件,如PNG或SVG,以便于分享和离线查看。 8. **性能优化**:处理大量邮件时,性能优化是必要的。...

    避开10大常见坑:DeepSeekAPI集成中的错误处理与调试指南.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    前端分析-2023071100789

    前端分析-2023071100789

    基于kinect的3D人体建模C++完整代码.cpp

    基于kinect的3D人体建模C++完整代码.cpp

    搞机工具箱10.1.0.7z

    搞机工具箱10.1.0.7z

    GRU+informer时间序列预测(Python完整源码和数据)

    GRU+informer时间序列预测(Python完整源码和数据),python代码,pytorch架构,适合各种时间序列直接预测。 适合小白,注释清楚,都能看懂。功能如下: 代码基于数据集划分为训练集测试集。 1.多变量输入,单变量输出/可改多输出 2.多时间步预测,单时间步预测 3.评价指标:R方 RMSE MAE MAPE,对比图 4.数据从excel/csv文件中读取,直接替换即可。 5.结果保存到文本中,可以后续处理。 代码带数据,注释清晰,直接一键运行即可,适合新手小白。

    性价比革命:DeepSeekAPI成本仅为GPT-4的3%的技术揭秘.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    基于ANSYS LSDyna的DEM-SPH-FEM耦合模拟滑坡入水动态行为研究,基于ANSYS LSDyna的DEM-SPH-FEM耦合的滑坡入水模拟分析研究,基于ansys lsdyna的滑坡入水

    基于ANSYS LSDyna的DEM-SPH-FEM耦合模拟滑坡入水动态行为研究,基于ANSYS LSDyna的DEM-SPH-FEM耦合的滑坡入水模拟分析研究,基于ansys lsdyna的滑坡入水模拟dem-sph-fem耦合 ,基于ANSYS LSDyna; 滑坡入水模拟; DEM-SPH-FEM 耦合,基于DEM-SPH-FEM耦合的ANSYS LSDyna滑坡入水模拟

    auto_gptq-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

    auto_gptq-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

    复件 复件 建设工程可行性研究合同[示范文本].doc

    复件 复件 建设工程可行性研究合同[示范文本].doc

    13考试真题最近的t64.txt

    13考试真题最近的t64.txt

    Microsoft Visual C++ 2005 SP1 Redistributable PackageX86

    好用我已经解决报错问题

    嵌入式开发入门:用C语言点亮LED灯的全栈开发指南.pdf

    # 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!

    auto_gptq-0.4.2-cp38-cp38-win_amd64.whl

    auto_gptq-0.4.2-cp38-cp38-win_amd64.whl

    自动立体库设计方案.pptx

    自动立体库设计方案.pptx

    手把手教你用C语言实现贪吃蛇游戏:从算法设计到图形渲染.pdf

    # 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!

    性能对决:DeepSeek-V3与ChatGPTAPI在数学推理场景的基准测试.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

Global site tag (gtag.js) - Google Analytics