`
sea0108
  • 浏览: 54533 次
  • 性别: 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)));
	}
}

分享到:
评论

相关推荐

    javaMail实现文件接收与发送

    在提供的压缩包文件"java实现邮件发送与接收"中,应该包含示例代码,帮助你更好地理解上述过程。通过运行这些代码,你可以快速测试邮件的发送和接收功能,并根据自己的需求进行定制。 请注意,对于Gmail等服务,...

    利用JavaMail发送邮件示例

    JavaMail 是一个开源库,它允许Java开发者使用标准的SMTP(简单邮件传输协议)或ESMTP(扩展SMTP)协议发送邮件,同时也能通过IMAP(Internet消息访问协议)和POP3(邮局协议)接收邮件。这个示例将详细介绍如何在...

    JavaMail.jar文件

    JavaMail.jar文件是Java编程语言中用于处理电子邮件的库,它是JavaMail API的核心组件。JavaMail API是一个开源的、跨平台的API,开发者可以利用它来实现邮件的发送、接收和管理功能,包括SMTP(简单邮件传输协议)...

    利用javamail发送邮件

    JavaMail 是一个强大的开源库,用于在Java应用程序中发送和...通过阅读和理解代码,你可以学习如何在Java应用程序中利用JavaMail API发送邮件。记得在本地环境中配置正确的SMTP服务器信息,以确保邮件能够成功发送。

    JavaMail写的示例程序

    用JavaMail写的示例程序,已经打包为jar 使用前在jar同目录下建立三个文本文件 addr.txt这个是收信人的地址,可以无限多,建议不超过50,否则面临smtp退信,格式 :一行一个地址,后面不要加空行! login.txt这个是...

    利用javamail api实现的邮件发送类

    以上就是利用JavaMail API 实现邮件发送类的基本步骤和关键知识点。这个类提供了发送简单邮件和带附件的邮件,以及设置抄送和密送的功能,满足日常开发需求。在实际项目中,可以根据具体需求对这个类进行扩展和定制...

    javamail的jar文件

    `mail.jar`是JavaMail的主要库文件,包含了发送和接收电子邮件所需的所有核心类和接口。它提供了对SMTP(简单邮件传输协议)、POP3(邮局协议版本3)和IMAP(因特网消息访问协议)等邮件协议的支持。通过JavaMail,...

    jsp 利用 javamail发送邮件(附带java web项目文件)

    本教程将深入探讨如何在JSP(JavaServer Pages)中利用JavaMail API来实现邮件发送功能,同时提供了一个完整的Java Web项目文件供参考。 首先,要使用JavaMail,你需要在项目中引入必要的依赖。在Maven项目中,可以...

    利用JavaMail发邮件

    在本篇文章中,我们将深入探讨如何利用JavaMail API发送邮件,以及在实际应用中可能遇到的关键知识点。 首先,JavaMail的核心组件包括`javax.mail`和`javax.mail.internet`这两个包。`javax.mail`包含了处理邮件...

    javamail.jar,javamail资源包

    `javamail.jar` 文件是JavaMail的核心库,包含了所有必要的类和接口,使得开发者可以在他们的应用程序中集成邮件功能。 在JavaMail中,有几个关键的概念和组件: 1. **Session**: 这是JavaMail中的顶级对象,代表...

    利用JavaMail发送邮件的实例,可以直接运行

    如果是Maven项目,可以在pom.xml文件中添加如下依赖: ```xml &lt;groupId&gt;com.sun.mail&lt;/groupId&gt; &lt;artifactId&gt;javax.mail &lt;version&gt;1.6.2 ``` 3. **配置属性**:创建一个`Properties`对象来设置SMTP服务器...

    在spring利用javamail,quartz定时发送邮件

    本文将详细探讨如何在Spring环境中,利用JavaMail和Quartz库实现定时发送邮件的功能。 #### JavaMail简介 JavaMail API是一个允许Java应用程序读取和发送邮件的工具包。它提供了与不同邮件协议(如SMTP、POP3和...

    JavaMail API的两个jar文件

    在JavaMail API中,`mail.jar` 和 `activation.jar` 是两个核心的JAR文件,它们提供了不同的功能支持。 `mail.jar` 文件包含了JavaMail API的主要实现,提供了一系列的类和接口,用于与邮件服务器进行通信。这些类...

    javamail写的测试代码

    这个“javamail写的测试代码”可能是一个小型的Java项目,旨在演示或验证JavaMail库的正确配置和功能。下面,我们将深入探讨JavaMail的核心概念以及如何构建一个简单的测试邮件发送程序。 JavaMail API 提供了丰富...

    利用JavaMail发送邮件

    该程序通过JavaMail是实现邮件的发送,代码经过测试并成功,如果不能成功,请你在outlook下测试,看看你的设置是否正确。其它类包都包含在工程里面,并设置好路径了,你下载后,只要加载到Eclipse下面并修改JRE路径...

    javamail写的邮件

    JavaMail 是一个开源的 Java 库,用于在 Java 应用程序中实现电子邮件的发送和接收。它提供了丰富的 API,可以处理 SMTP、POP3、IMAP 协议,以及 MIME 消息的创建和解析。JavaMail 允许开发者轻松地实现邮件服务器的...

    JavaMail+JAF+JavaMail_API+JavaMail_API详解

    JavaMail API详解.chm文件可能是一个帮助文档,详细介绍了如何使用JavaMail API进行邮件操作。它可能涵盖了如何设置邮件服务器连接,创建邮件消息,添加附件,处理邮件头信息,以及使用MIME多部分消息等内容。这个...

    jsp写的收发邮件,使用javamail写的

    JavaMail 是一个开源库,广泛用于在Java应用程序中发送和接收电子邮件。在JSP(JavaServer Pages)中使用JavaMail可以实现动态的邮件服务功能,比如注册验证、密码重置等场景。本项目通过JavaMail API实现了邮件的...

    javamail(带界面的javamail)

    JavaMail 是一个强大的开源库,用于在Java应用程序中实现电子邮件的发送和接收功能。它提供了丰富的API,使得开发者能够方便地处理SMTP、POP3、IMAP等邮件协议,支持多种邮件格式,包括文本、HTML以及带有附件的邮件...

Global site tag (gtag.js) - Google Analytics