最近项目中用到发送邮件,实现后把自己的心得写出来,希望能帮到同僚们
Spring 的 mail 实现在对java.mail 的封装 实现起来要更加简洁,脱离了使用java.mail 的繁琐操作
需要的包有 jar,mail.jar,commons-logging.jar,activation.jar
Spring mail 根据功能的需求划分成2部分
1 发送简单的文本邮件
org.springframework.mail
--mail --MailMessage 基础邮件信息(标题,接受地址,发送地址,文本内容,发送时间)
--MailSender 父接口JavaMailSender 实现类 JavaMailSenderImpl 发送简单的邮件信息
例子:
public void sendmail(){
//创建邮件发送类 JavaMailSender
//用于发送基本的文本邮件信息(不能包括附件,及图片)
JavaMailSender sender = new JavaMailSenderImpl();
//设置邮件服务主机
((JavaMailSenderImpl)sender).setHost("smtp.sohu.com");
//发送者邮箱的用户名
((JavaMailSenderImpl)sender).setUsername("userName");
//发送者邮箱的密码
((JavaMailSenderImpl)sender).setPassword("password");
//配置文件,用于实例化java.mail.session
Properties pro = System.getProperties();
//登录SMTP服务器,需要获得授权,网易163邮箱新近注册的邮箱均不能授权。
//测试 sohu 的邮箱可以获得授权
pro.put("mail.smtp.auth", "true");
pro.put("mail.smtp.socketFactory.port", "25");
pro.put("mail.smtp.socketFactory.fallback", "false");
//通过文件获取信息
((JavaMailSenderImpl)sender).setJavaMailProperties(pro);
//创建基本邮件信息
MailMessage mailMessage = new SimpleMailMessage();
//发送者地址,必须填写正确的邮件格式,否者会发送失败
mailMessage.setFrom("******@sohu.com");
//邮件主题
mailMessage.setSubject("测试邮件");
//邮件内容,简单的邮件信息只能添加文本信息
mailMessage.setText("测试");
//邮件接收者的邮箱地址
mailMessage.setTo("******@qq.com");
//发送邮件,参数可以是数组
//sender.send(SimpleMailMessage[])
sender.send((SimpleMailMessage)mailMessage);
}
2 发送多元化的邮件,可以包括附件,图片等
--mail.javamail
--JavaMailSender 扩充父接口 MailSender 支持发送mime电子邮件(html,附件,等)
--JavaMailSenderImpl javaMailSender,MailSender 的实现类
--MimeMailMessage javax.mail.internet 多用途邮件
--MimeMessageHelper 辅助类,将参数封装至MimeMessage 里。
--to 添加接受方的邮件地址,该方法封装了 javax.mail.Message.setRecipient() 方法
--from 添加发送发地址 封装了 javax.mail.internet.MimeMessage.setFrom(Address arg0)方法
--setSubject 邮件标题 封装了 javax.mail.internet.MimeMessage.setSubject(String arg0)
--setText 邮件内容 封装了void javax.mail.Part.setContent(Object arg0, String arg1) 和
和void javax.mail.internet.MimePart.setText(String arg0);如果是html 调用前者,
--MimeMessagePreparator 可以回调接口,使用MimeMessage 的功能。
例子:
public void sendMimeMail() throws MessagingException{
//创建邮件发送类 JavaMailSender
//用于发送多元化邮件,包括附件,图片,html 等
JavaMailSender mimeMailSender = new JavaMailSenderImpl();
//设置邮件服务主机
((JavaMailSenderImpl)mimeMailSender).setHost("smtp.sohu.com");
//发送者邮箱的用户名
((JavaMailSenderImpl)mimeMailSender).setUsername("userName");
//发送者邮箱的密码
((JavaMailSenderImpl)mimeMailSender).setPassword("password");
//配置文件,用于实例化java.mail.session
Properties pro = System.getProperties();
//登录SMTP服务器,需要获得授权,网易163邮箱新近注册的邮箱均不能授权。
//测试 sohu 的邮箱可以获得授权
pro.put("mail.smtp.auth", "true");
pro.put("mail.smtp.socketFactory.port", "25");
pro.put("mail.smtp.socketFactory.fallback", "false");
((JavaMailSenderImpl)mimeMailSender).setJavaMailProperties(pro);
//创建多元化邮件
MimeMessage mimeMessage = ((JavaMailSenderImpl)mimeMailSender).createMimeMessage();
//创建 mimeMessage 帮助类,用于封装信息至 mimeMessage
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "GBK");
//基本信息
//发送者地址,必须填写正确的邮件格式,否者会发送失败
helper.setFrom("*******@sohu.com");
//邮件主题
helper.setSubject("测试邮件");
//邮件内容,简单的邮件信息只能添加文本信息
helper.setText("测试");
//邮件接收者的邮箱地址
helper.setTo("******@qq.com");
//多元化信息
//添加HTML 信息
File myPicture = new File("C:\\Documents and Settings\\Administrator\\桌面\\kz2.jpg");
//如果是html代码,boolean 的参数用该为true
helper.setText("<html><head><meta http-equiv="+"Content-Type"+" content="+"text/html; charset=gb2312"+"></head><body><h1>新书快递通知</h1>你的新书快递申请已推送新书,请到<a href=''>空间"
+ "</a>中查看<br><img src='cid:myPicture'></body></html>", true);
//添加图片至HTML 代码中
helper.addInline("myPicture", myPicture);
//添加附件
File file = new File("C:\\Documents and Settings\\Administrator\\桌面\\validate.jar");
helper.addAttachment("picture", myPicture);
helper.addAttachment("picture", file);
((JavaMailSender)mimeMailSender).send(mimeMessage);
System.out.println("发送成功");
}
分享到:
相关推荐
### Spring Mail 发送邮件实例详解 #### 一、Spring Mail 概述 Spring Mail 是 Spring 框架中用于处理电子邮件发送的一个模块。它提供了一种简单的方式来进行邮件的发送,支持多种邮件发送协议,例如 SMTP 等,...
【Spring+CXF请求WebService详解】 在Java开发领域,Spring框架以其强大的依赖注入和面向切面编程能力被广泛应用,而CXF则是一个优秀的开源服务开发框架,支持SOAP和RESTful服务。当Spring与CXF结合使用时,可以...
这个抽象层主要包含在`org.springframework.mail`包中,提供了`MailSender`接口和`SimpleMailMessage`类等核心组件。 ### 22.1. 简介 `MailSender`接口是Spring邮件抽象的核心,它定义了发送简单邮件的基本方法。...
- `javaMailSender`: 这是Spring Mail模块中的一个接口,用于定义邮件发送的操作。 - `velocityEngine`: Velocity引擎实例,用于处理模板文件。 - `from`: 发件人邮箱地址。 - `title`: 邮件主题。 - `encoding`: ...
Spring 2.5 jar 所有开发包及完整文档及项目开发实例 spring jar 包详解spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了 spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下...
《Spring Boot Mail邮件发送服务详解》 在现代的软件开发中,邮件服务作为一个重要的通信渠道,被广泛应用于用户注册验证、系统通知、客户服务等场景。Spring Boot作为Java领域的一个热门框架,提供了便捷的方式来...
为了使用Spring的邮件发送功能,首先需要在项目pom.xml文件中添加Spring Boot的`spring-boot-starter-mail`依赖: ```xml <!-- 邮件 --> <groupId>org.springframework.boot <artifactId>spring-boot-starter...
Spring框架JavaMailSender发送邮件工具类详解 Spring框架JavaMailSender发送邮件工具类是一种基于Spring框架的邮件发送工具类,它提供了一个灵活的邮件发送解决方案,允许开发者通过Spring框架来发送邮件。在本文中...
### Struts2、Spring和Hibernate应用实例图文教程 #### Struts2框架介绍及特性 Struts2是一个基于Java的企业级Web应用开发框架,它继承了Struts1的优点,并且在此基础上进行了很多改进与创新。Struts2采用了MVC...
【知识点详解】 在Java开发中,发送邮件是一项常见的任务,特别是在企业级应用中,用于通知、验证或客户服务等。Spring框架提供了便捷的方式来处理邮件发送,极大地简化了这一过程。本篇将详细介绍如何利用Spring和...
《Spring全家桶:Java邮件服务详解》 在Java后端开发中,Spring框架以其全面性和灵活性,被誉为"Spring全家桶"。本篇文章将深入探讨Spring框架中与邮件服务相关的知识点,帮助开发者理解如何利用Spring轻松实现邮件...
### Spring框架发送邮件知识点详解 #### 一、Spring框架邮件发送功能概述 Spring框架提供了一套简洁而强大的工具集来支持应用开发中的多种需求,其中之一就是邮件发送功能。该功能可以帮助开发者轻松集成邮件服务...
使用 Spring Stream 发送消息代码实例详解 Spring Stream 是一个基于 Spring 的消息队列发送框架,主要用来隔离各种消息队列的区别,使用统一的编程模型来发送消息。下面,我们将通过实例代码详细介绍如何使用 ...
**LDAP实例详解** LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,用于存储和检索分布式目录服务中的信息。在IT行业中,LDAP被广泛应用于用户身份验证、权限管理和组织结构管理等领域。...
### Spring 3.x企业应用开发实战之JavaMail发送邮件知识点详解 #### 一、JavaMail基础知识的快速学习 ##### 1.1 JavaMail概述 JavaMail是Java领域中最为知名的邮件解决方案之一,由Sun Microsystems(现已被...
### Spring Boot 基本配置详解 #### 一、启动图案 Banner 在 Spring Boot 项目中,启动时显示的默认图案可以通过自定义 banner 文件来进行更改。为了实现这一功能,需要在项目的 `resources` 目录下创建一个名为 `...
【SSM 框架详解】 SSM框架是Java Web开发中的一个常用组合,由Spring、Spring MVC和MyBatis三个开源项目组成。这个“ssm demo(学生管理系统)”项目是一个典型的SSM实践,旨在展示如何将这三个框架集成到一起,...
26 2.3 安装脚本详解 27 2.3.1 关于配置文件 30 2.3.2 关于依赖库 31 2.4 安装到JBoss 31 2.5 安装到Tomcat 32 2.6 基于Web的Signavio流程设计器 33 2.6.1 jBPM Web流程设计器简介 33 2.6.2 独立安装Signavio 34 ...