`
HJXia
  • 浏览: 88060 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

JavaMail的实现

    博客分类:
  • JAVA
阅读更多
今天研究了一下JavaMail,总算对它有了点新的认识.
需要两个包,mail.jar,activation.jar.
以下是实现代码:
package javamaildemo;

import java.io.IOException;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.AuthenticationFailedException;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class EmailUtil {
	
	//要发送Email地址
	private String mailTo;
	//Mail发送的起始地址
	private String mailFrom;
	//smtp的地址
	private String smtpHost;
	//是否采用debug模式
	private boolean debug = false;
	//邮件主题
	private String subject;
	//邮件内容
	private String msgContent;
	//邮件类型
	private String msgContentMimeType="text/html;charset=UTF-8";
	//邮件附件列表
	private List attachedFileList;
	//附件的位置
	private String messageBasePath;
	
	public EmailUtil()
	{
		super();
	}
	
	/*
	 * 填充Email内容,包括发件人,收件人,主题,主体,附件,发信日期
	 * @param Session,MimeMessage
	 */
	public void fillMail(Session session,MimeMessage msg)throws IOException, MessagingException
	{
		String fileName;
		Multipart mPart=new MimeMultipart();
		if(mailFrom != null)
		{
			msg.setFrom(new InternetAddress(mailFrom));
			System.out.println("发送人Email地址: " + mailFrom);
		}
		else
		{
			System.out.println("没有指定发送人邮件地址!");
			return;
		}
		
		if(mailTo !=null)
		{
			InternetAddress[] address = InternetAddress.parse(mailTo);
			msg.setRecipients(Message.RecipientType.TO, address);
			System.out.println("收件人Email地址: "+mailTo);
		}
		else
		{
			System.out.println("没有指定收件人邮件地址!");
			return;
		}
		msg.setSubject(subject);
		InternetAddress[] replyAddress = {new InternetAddress(mailFrom)};
		msg.setReplyTo(replyAddress);
		
		MimeBodyPart mBodyContent = new MimeBodyPart();
		if(msgContent != null)
		{
			mBodyContent.setContent(msgContent, msgContentMimeType);
		}
		else
		{
			mBodyContent.setContent("",msgContentMimeType);
		}
		mPart.addBodyPart(mBodyContent);
		
		if(attachedFileList != null)
		{
			for(Iterator i=attachedFileList.iterator();i.hasNext();)
			{
				fileName = (String)i.next();
				MimeBodyPart mBodyPart = new MimeBodyPart();
				FileDataSource fds = new FileDataSource(messageBasePath + fileName);
				System.out.println("Mail发送的附件为: "+messageBasePath + fileName);
				mBodyPart.setDataHandler(new DataHandler(fds));
				mBodyPart.setFileName(fileName);
				mPart.addBodyPart(mBodyPart);
			}
		}
		msg.setContent(mPart);
		msg.setSentDate(new Date());		
	}
	
	/*
	 * 发送Email,返回0表示邮件发送成功,返回3表示邮件发送失败
	 * @return int
	 */
	public int sendEmail() throws IOException,MessagingException
	{
		Properties props = System.getProperties();
		props.put("mail.smtp.host", smtpHost);
		props.put("mail.smtp.auth", "true");
		
		MailAuthenticator auth = new MailAuthenticator();
		Session session = Session.getInstance(props,auth);
		session.setDebug(debug);
		MimeMessage msg = new MimeMessage(session);
		
		Transport trans = null;
		try
		{
			fillMail(session,msg);
			trans = session.getTransport("smtp");
			try
			{
				trans.connect(smtpHost,auth.USER,auth.PASSWORD);
			}
			catch(AuthenticationFailedException e)
			{
				e.printStackTrace();
				System.out.println("连接邮件服务器错误!");
				return 3;
			}
			catch(MessagingException e)
			{
				System.out.println("连接邮件服务器错误!");
				return 3;
			}
			trans.send(msg);
			trans.close();
		}
		catch(MessagingException mex)
		{
			System.out.println("发送邮件失败!");
			mex.printStackTrace();
			Exception ex = null;
			if((ex=mex.getNextException())!=null)
			{
				System.out.println(ex.toString());
				ex.printStackTrace();
			}
			return 3;
		}
		finally
		{
			try{
				if(trans != null && trans.isConnected())
					trans.close();
			}catch(Exception e){
				System.out.println(e.toString());
			}
		}
		System.out.println("发送邮件成功!");
		return 0;
	}
	
	class MailAuthenticator extends Authenticator
	{
		private String USER="帐号";
		private String PASSWORD="密码";
		protected PasswordAuthentication getPasswordAuthentication() {
			return new PasswordAuthentication(USER,PASSWORD);
		}
	}

	public boolean isDebug() {
		return debug;
	}

	public void setDebug(boolean debug) {
		this.debug = debug;
	}

	public String getMailFrom() {
		return mailFrom;
	}

	public void setMailFrom(String mailFrom) {
		this.mailFrom = mailFrom;
	}

	public String getMailTo() {
		return mailTo;
	}

	public void setMailTo(String mailTo) {
		this.mailTo = mailTo;
	}

	public String getMsgContent() {
		return msgContent;
	}

	public void setMsgContent(String msgContent) {
		this.msgContent = msgContent;
	}

	public String getSmtpHost() {
		return smtpHost;
	}

	public void setSmtpHost(String smtpHost) {
		this.smtpHost = smtpHost;
	}

	public String getSubject() {
		return subject;
	}

	public void setSubject(String subject) {
		this.subject = subject;
	}

	public String getMsgContentMimeType() {
		return msgContentMimeType;
	}

	public void setMsgContentMimeType(String msgContentMimeType) {
		this.msgContentMimeType = msgContentMimeType;
	}

	public List getAttachedFileList() {
		return attachedFileList;
	}

	public void setAttachedFileList(List attachedFileList) {
		this.attachedFileList = attachedFileList;
	}

	public String getMessageBasePath() {
		return messageBasePath;
	}

	public void setMessageBasePath(String messageBasePath) {
		this.messageBasePath = messageBasePath;
	}
}
分享到:
评论

相关推荐

    javamail实现邮件发送(支持多接收人、多附件)

    在JavaMail中,我们可以使用 javax.mail 包中的接口和类来实现邮件服务。本教程将详细讲解如何使用 JavaMail 实现邮件发送功能,包括支持多个接收人、抄送人以及添加多个附件。 首先,确保你已经添加了 JavaMail 的...

    james和javamail实现邮件收发(带发送附件)

    在这个例子中,我们将深入探讨如何利用James服务器和JavaMail API来实现这一目标,同时处理中文内容和附件。 首先,James(Apache James)是一个开源的邮件服务器,它支持SMTP、POP3和IMAP协议,可以作为企业级的...

    springboot集成javamail实现发送邮件功能

    springboot集成javamail,实现发送邮件的功能,可以发送文本类型邮件,也可以发送html格式的邮件,其中整合了mysql、mybatis 具体集成步骤可以参考我的文章: https://www.jianshu.com/p/668d320b4981

    javaMail实现文件接收与发送

    总结起来,JavaMail是Java开发中处理邮件通信的重要工具,它通过简单的API实现了邮件的发送和接收,广泛应用于各种企业级应用和自动化任务中。通过深入理解和实践,你可以轻松地构建出满足各种需求的邮件功能。

    javaMail实现单发/群发邮件操作

    在这个项目中,我们将会探讨如何使用 JavaMail 实现单发和群发邮件的操作。 首先,为了使用 JavaMail 发送邮件,我们需要引入相关的依赖。在 Maven 项目中,可以在 `pom.xml` 文件中添加以下依赖: ```xml ...

    使用JavaMail实现发送邮件

    本篇将深入探讨如何使用JavaMail实现发送邮件,以及相关的源码分析。 首先,我们需要了解JavaMail的基本组件。`javax.mail`库主要包含以下关键接口和类: 1. `Session`:这是JavaMail的核心,代表与邮件服务器的...

    javaMail实现发送邮件的demo

    本示例将介绍如何使用 JavaMail 实现发送邮件的功能。 首先,我们需要导入 JavaMail 相关的库。在 Maven 项目中,可以在 `pom.xml` 文件中添加以下依赖: ```xml <groupId>com.sun.mail</groupId> <artifactId>...

    Javamail实现邮件的发送

    在本项目中,我们将重点讨论如何使用 JavaMail 实现邮件的发送功能,以及涉及到的关键知识点。 首先,`javax.mail-1.5.1.jar` 是 JavaMail 的核心库文件,包含了处理邮件操作所需的类和接口。这个库提供了包括创建...

    javamail实现群发邮件

    在本文中,我们将深入探讨如何使用 JavaMail 实现群发邮件的功能。 首先,要使用 JavaMail 发送邮件,我们需要添加其依赖到项目中。如果你使用的是 Maven,可以在 `pom.xml` 文件中添加以下依赖: ```xml ...

    学士后 第三单元 OA系统 javamail实现

    总的来说,这个"学士后 第三单元 OA系统 javamail实现"课程不仅涵盖了邮件通信的基本原理,还涉及到实际项目开发中的一些关键技术,如SSH框架的应用,对于想要深入理解和实践企业级OA系统开发的学员来说,是非常宝贵...

    javamail实现发送邮件

    在本篇中,我们将深入探讨如何利用 JavaMail 实现发送邮件。 首先,要使用 JavaMail,我们需要引入必要的库。通常,这包括 javax.mail 和 javax.mail.internet 包。这两个包提供了创建、配置和发送邮件所需的所有...

    javamail实现邮件收发和加密

    在这个主题中,我们将深入探讨如何使用 JavaMail 实现邮件的加密和解密,以及如何进行邮件的签名,确保通信的安全性。 1. **JavaMail 基础** 在 JavaMail 中,`javax.mail` 和 `javax.mail.internet` 包提供了主要...

    JavaMail实现发送邮件功能

    在本文中,我们将深入探讨如何使用 JavaMail 实现发送邮件的功能。 首先,你需要在项目中引入 JavaMail 相关的依赖库。常见的方法是通过 Maven 或 Gradle 的依赖管理来添加。对于 Maven,可以在 `pom.xml` 文件中...

    基于Javamail实现的邮件收发系统毕业设计(系统+论文+开题报告+任务书+外文翻译+文献综述+答辩PPT)

    【作品名称】:基于Javamail实现的邮件收发系统(系统+论文+开题报告+任务书+外文翻译+文献综述+答辩PPT) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程...

    JavaMail实现邮件发送功能,可发送、抄送、密送多人,支持多附件的发送

    本篇将详细介绍如何利用 JavaMail 实现邮件发送,包括发送、抄送、密送多人以及添加多附件。 首先,你需要在项目中引入 JavaMail 的依赖。如果是 Maven 项目,可以在 `pom.xml` 文件中添加如下依赖: ```xml ...

    利用JavaMail实现邮件的收取.doc

    【JavaMail实现邮件收取详解】 JavaMail 是一个用于处理电子邮件的开源库,它提供了发送和接收邮件的功能。本文将详细讲解如何使用JavaMail API来实现邮件的收取。 首先,我们需要了解一些基本配置。在示例代码中...

    使用javaMail实现发送邮件所需的jar包集合

    在这个场景中,提到的"使用javaMail实现发送邮件所需的jar包集合"指的是JavaMail的核心依赖,通常包括以下三个关键的JAR文件: 1. **mail.jar**:这是JavaMail的核心库,包含了处理SMTP(简单邮件传输协议)、POP3...

    javamail 实现公司内网邮件发送

    用javaMail实现公司内网邮箱邮件发送,包括邮件附件,邮件发送人和抄送人

    JavaMail实现源代码和jar包

    这个压缩包包含了一组与 JavaMail 相关的源代码和必要的库文件,使得开发者可以快速地理解和实现邮件功能。 1. **mail.jar**:这是一个核心的 JavaMail JAR 文件,包含了 JavaMail API 的所有类和接口,如 `javax....

    javamail实现邮件的发送(使用QQ,163)

    javamail实现的邮件发送功能,内含完整代码和jar包,邮件服务协议smtp,pop3,用javamail发送邮件,支持QQ,163邮件发送。相同邮件(QQ邮箱给QQ邮箱)和不同邮件(QQ邮箱给163邮箱)是不一样的。

Global site tag (gtag.js) - Google Analytics