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邮件,极简单的例子。看完就会。。。
SpringBoot整合JavaMail功能,使用的是Spring自带的发送邮件功能,本Demo以qq邮箱为服务器做的测试,完成了纯文本发送、html发送、嵌入图片、带有附件等的封装,如有不足欢迎交流
Spring框架整合Quartz,使用javamail定时发送邮件
Spring提供了非常好用的JavaMailSender接口实现邮件发送。在Spring Boot的Starter模块中也为此提供了自动化配置。下面通过实例看看如何在Spring Boot中使用JavaMailSender发送邮件。
spring整合freemarker实现发送邮件, html中内嵌图片,添加附件, 解决乱码问题.
1.4.7 JavaMail(Java邮件服务) 1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍...
1.4.7 JavaMail(Java邮件服务) 1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍...
12.1 Spring整合ORM技术 12.2 在Spring中使用Hibernate 12.2.1 配置SessionFactory 12.2.2 使用HibernateTemplate 12.2.3 处理LOB类型数据 12.2.4 添加Hibernate事件监听器 12.2.5 使用原生Hibernate API 12.2.6 ...
第一个 Spring 程式 BeanFactory、 ApplicationContext Type 2 IoC、Type 3 IoC 属性参考 自动绑定 集合物件注入 Bean 的生命周期 Bean 进阶管理 理想上对于 Bean 来说,它不...
使用JPA访问数据库 第12章 整合其他ORM框架 第4篇 业务层应用 第13章 任务调度和异步执行器 第14章 JavaMail发送邮件 第15章 在Spring中使用JMS 第16章 在Spring中开发Web Service 第17章 使用...
1.4.7 JavaMail(Java邮件服务) 1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍...
12.1 Spring整合ORM技术 12.2 在Spring中使用Hibernate 12.2.1 配置SessionFactory 12.2.2 使用HibernateTemplate 12.2.3 处理LOB类型数据 12.2.4 添加Hibernate事件监听器 12.2.5 使用原生Hibernate API 12.2.6 ...
整合 17. 使用Spring进行远程访问与Web服务 17.1. 简介 17.2. 使用RMI暴露服务 17.2.1. 使用 RmiServiceExporter 暴露服务 17.2.2. 在客户端链接服务 17.3. 使用Hessian或者Burlap通过HTTP远程调用服务 ...