`
一日一博
  • 浏览: 230429 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Spring3整合邮件之JavaMail

阅读更多
Spring3整合JavaMail只需要往Spring工程里面加入mail.jar然后配置JavaMailSenderImpl这个Bean,然后通过这个Bean的实例去调用他的send方法就可以发送邮件了,我这里使用的是1.4.5版本。

下面的demo可以额发送普通文本邮件,Html脚本邮件和Mime附件邮件:

<bean id="mail" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <!-- SMTP发送邮件的服务器的IP和端口 -->
        <property name="host" value="smtp.163.com"/>
        <property name="port" value="25"/>
        
        <!-- 登陆SMTP邮件发送服务器的用户名和密码 -->
        <property name="username" value="...@163.com"/>
        <property name="password" value="password"/>
        
        <!-- 获得邮件会话属性,验证登录邮件服务器是否成功-->
        <property name="javaMailProperties">
             <props>
                 <prop key="mail.smtp.auth">true</prop>
                 <prop key="mail.smtp.timeout">25000</prop>
             </props>
        </property>
</bean>

public class MailSenderFactory {
	// 获取JavaMailSender bean
	public static JavaMailSender getJavaMailSender() {
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-mail.xml");
		return (JavaMailSender) context.getBean("mail");
	}
}

public interface Send {
	public void send();
}

/**
 * @author Chou
 * @since 2012-09-16
 * 文本邮件
 * SimpleMailMessage只能用来发送text格式的邮件
 */
public class SendTextMail implements Send{
	
	public void send() {
		System.out.println("准备发送文本形式的邮件...");

		SimpleMailMessage mail1 = new SimpleMailMessage();
		SimpleMailMessage mail2 = new SimpleMailMessage();

		mail1.setFrom("...@163.com");// 发送人名片
		mail1.setTo("...@sina.com");// 收件人邮箱
		mail1.setSubject("Spring Mail 测试邮件");// 邮件主题
		mail1.setSentDate(new Date());// 邮件发送时间
		mail1.setText("Hello,Boy,This is my Spring Mail,哈哈!!");

		// 复制邮件
		mail1.copyTo(mail2);
		mail2.setSubject("这是一封复制的邮件");

		// 群发
		SimpleMailMessage[] mailMessages = { mail1, mail2 };
		MailSenderFactory.getJavaMailSender().send(mailMessages);

		System.out.println("文本形式的邮件发送成功!!!");
	}
}

/**
 * @author Chou
 * @since 2012-09-16
 * HTML脚本形式邮件MimeMessage需要设置编码
 */
public class SendHtmlMail implements Send{
	
	public void send() {
		JavaMailSender mailSender = MailSenderFactory.getJavaMailSender();
		MimeMessage mimeMessage = mailSender.createMimeMessage();
		try {
			System.out.println("HTML脚本形式邮件正在发送...");
			//设置utf-8或GBK编码,否则邮件会有乱码
			MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
			//设置发送人名片
			helper.setFrom("...@163.com");
			//设置收件人名片和地址
			helper.setTo(new InternetAddress("\"" + MimeUtility.encodeText("sina邮箱") + "\" <...@sina.com>"));// 发送者
			// 邮件发送时间
			helper.setSentDate(new Date());
			//设置回复地址
			helper.setReplyTo(new InternetAddress("...@sina.com"));
			//设置抄送的名片和地址
			helper.setCc(InternetAddress.parse(MimeUtility.encodeText("抄送人001") + " <...@163.com>," + MimeUtility.encodeText("抄送人002") + " <...@foxmail.com>"));
			//主题
			helper.setSubject("챔피언쉽");
			// 邮件内容,注意加参数true,表示启用html格式
			helper.setText("<html><head></head><body><h1>hello!!我是乔布斯</h1></body></html>",true);
			//发送
			mailSender.send(mimeMessage);
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("HTML脚本形式邮件发送成功!!!");
	}
}

/**
 * @author Chou
 * @since 2012-09-16
 * 发送带附件和图片的邮件
 * MimeMessage需要设置编码
 */
public class SendFileMail implements Send{
	
	public void send() {
		JavaMailSender mailSender = MailSenderFactory.getJavaMailSender();
		MimeMessage mimeMessage = mailSender.createMimeMessage();
		try {
			System.out.println("带附件和图片的邮件正在发送...");
			//设置utf-8或GBK编码,否则邮件会有乱码
			MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
			
			//设置发送人名片
			helper.setFrom("...@163.com");
			
			//设置收件人邮箱
			helper.setTo(new InternetAddress("\"" + MimeUtility.encodeText("sina邮箱") + "\" <...@sina.com>"));
			
			//设置回复地址
			helper.setReplyTo(new InternetAddress("...@qq.com"));
			
			//设置收件人抄送的名片和地址(相当于群发了)
			helper.setCc(InternetAddress.parse(MimeUtility.encodeText("邮箱001") + " <...@163.com>," + MimeUtility.encodeText("邮箱002") + " <...@foxmail.com>"));
			
			// 主题
			helper.setSubject("챔피언쉽");
			// 邮件内容,注意加参数true,表示启用html格式
			helper.setText("<html><head></head><body><h1>hello!!我是乔布斯   챔피언쉽</h1></body></html>",true);
			// 加入附件
			helper.addAttachment(MimeUtility.encodeText("附件"), new File("E:\\WALL\\Style\\卡通.jpg"));
			// 加入插图
			helper.addInline(MimeUtility.encodeText("pic01"), new File("E:/WALL/Style/卡通.jpg"));
			//发送
			mailSender.send(mimeMessage);
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("带附件和图片的邮件发送成功!!!");
	}
}

其实在实际项目中,用到的功能基本都是群发邮件,helper.setCc()可以设置抄送人地址,相当于你客户端只发送一封邮件,然后邮件服务器会帮你抄送给多人实现群发,当然,如果需求是不用抄送,要每人发一封,那么就要考虑多线程了。
分享到:
评论

相关推荐

    Spring整合JavaMail发送qq邮件

    下面将详细讲解如何利用Spring整合JavaMail发送QQ邮件。 首先,我们需要在项目中引入JavaMail的相关依赖。在Maven项目中,可以在pom.xml文件中添加如下依赖: ```xml &lt;groupId&gt;com.sun.mail&lt;/groupId&gt; ...

    SpringBoot整合邮箱JavaMail

    在本文中,我们将深入探讨如何在SpringBoot应用中整合JavaMail服务,以便实现电子邮件的发送功能。SpringBoot作为一款轻量级的框架,提供了一种简单的方法来集成各种功能,包括邮件服务。JavaMail是Java平台上的标准...

    spring+quartz+javamail定时发送邮件

    3. 定义邮件发送Job:创建一个Job类,实现`execute`方法,该方法包含了发送邮件的具体代码,如使用JavaMail API创建并发送邮件。 4. 创建Trigger:配置一个Trigger,它决定Job的执行时间,可以是简单的cron表达式...

    spring整合freemarker发送邮件例子

    本文将详细介绍如何使用Spring整合Freemarker和JavaMail API来实现发送带有HTML内容、内嵌图片和附件的邮件,并解决可能出现的乱码问题。 首先,我们需要在Spring的配置文件中配置邮件服务。这通常涉及到以下几步:...

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

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

    Spring3+ThymeLeaf

    标题 "Spring3+ThymeLeaf" 指的是在Spring框架的第三个主要版本(Spring 3)中结合Thymeleaf模板引擎来处理视...通过分析这些文件,开发者可以学习如何在实际项目中整合Spring、Thymeleaf和JavaMail以实现邮件服务。

    Spring Boot整合JavaMailSender发送电子邮件

    Spring提供了非常好用的JavaMailSender接口实现邮件发送。在Spring Boot的Starter模块中也为此提供了自动化配置。下面通过实例看看如何在Spring Boot中使用JavaMailSender发送邮件。

    java 发送邮件 spring发送邮件Mail

    Spring框架提供了一种优雅的方式来处理这个任务,它整合了JavaMailSender接口和JavaMail API,使得在Java应用程序中发送邮件变得更加简单。让我们深入探讨这个主题。 首先,JavaMail API是Java用来处理邮件收发的...

    spring依赖包,spring自行整合的市面上几乎和spring有关的jar包

    在描述中提到的“spring自行整合的市面上几乎和spring有关的jar包”,意味着这个压缩包包含了Spring生态系统中广泛使用的第三方库,使得开发者能够快速构建基于Spring的应用。 首先,`org.dom4j`是Java中用于处理...

    SpringBoot整合发送邮件

    在Java开发中,Spring Boot框架提供了便捷的方式来整合各种服务,包括发送邮件的功能。Spring Boot的邮件服务基于JavaMailSender接口,使得我们可以轻松地配置并发送电子邮件。本文将深入探讨如何在Spring Boot应用...

    Spring邮件发送源码

    总的来说,Spring通过`JavaMailSender`接口和相关的辅助类简化了邮件发送的过程,使得开发者无需深入理解复杂的JavaMail API就能轻松处理各种邮件需求。无论是对于初学者还是经验丰富的开发者,这都是一个非常实用的...

    SpringBoot中整合Mail实现简单邮件发送示例代码

    在Spring Boot框架中,整合JavaMailSender接口可以方便地实现邮件发送功能。Spring Boot通过自动配置简化了这个过程,使得开发者无需过多关注底层配置,只需少量代码就能完成邮件的发送。下面将详细介绍如何在Spring...

Global site tag (gtag.js) - Google Analytics