Spring发送邮件总结(附源码)
来源:互联网 发布:保时捷车载香水知乎 编辑:程序博客网 时间:2024/05/02 04:45
做项目用到自动发邮件功能,网上查阅很多没有给出特别详细的说明,需要自己去探索,做了很多弯路。
在此给大家分享一下自己的代码:
360网盘下载地址:http://yunpan.cn/cJzDQ3gVUHBxY 访问密码 8221
使用时 请将Spring 配置文件里的 用户名、密码、邮箱服务器 还有端口 进行修改如果不是 yeah邮箱。
如果使用maven项目:
Pom.xml
添加的内容
<!-- Spring3 --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>3.2.4.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>3.2.4.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>3.2.4.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>3.2.4.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>3.2.4.RELEASE</version></dependency><!-- Spring Email --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>3.2.4.RELEASE</version></dependency><!-- Javamail API --> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.4</version></dependency>
如果直接导入JAR方式 ,需要引入如下JAR包
EmailUtil
package com.bookmarksClouds.util;import java.io.File;import javax.annotation.Resource;import javax.mail.MessagingException;import javax.mail.internet.MimeMessage;import org.springframework.core.io.ClassPathResource;import org.springframework.core.io.FileSystemResource;import org.springframework.mail.SimpleMailMessage;import org.springframework.mail.javamail.JavaMailSender;import org.springframework.mail.javamail.MimeMessageHelper;import org.springframework.stereotype.Component;@Component("simpleMail")public class EmailUtil { private JavaMailSender javaMailSender; private SimpleMailMessage simpleMailMessage; /** * * @方法名: sendMail * @参数名:@param subject 邮件主题 * @参数名:@param content 邮件主题内容 * @参数名:@param to 收件人Email地址 * @param isHtml 是否是html格式(发送html时使用utf-8编码) * @描述语: 发送邮件 * @throws MessagingException 发送发生了异常 */ public void sendMail(String subject, String content,boolean isHtml, String to) throws MessagingException { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); MimeMessageHelper messageHelper =null; if(isHtml) { messageHelper = new MimeMessageHelper(mimeMessage,true,"UTF-8"); } else { messageHelper = new MimeMessageHelper(mimeMessage,true); } messageHelper.setFrom(simpleMailMessage.getFrom()); //设置发件人Email messageHelper.setSubject(subject); //设置邮件主题 if(isHtml) { messageHelper.setText(content,true); //设置邮件主题内容(html格式) } else { messageHelper.setText(content); //设置邮件主题内容 } messageHelper.setTo(to); //设定收件人Email javaMailSender.send(mimeMessage); } /** * 发送邮件 (包含附件) * @param subject 主题 * @param content 内容 * @param fileAttachment 附件文件 * @param isHtml 内容是否是html格式 * @param to 发送的邮箱地址 * @throws MessagingException 发送邮件异常(失败) */ public void sendMail(String subject, String content,boolean isHtml, File fileAttachment,String to) throws MessagingException { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true,"UTF-8"); messageHelper.setFrom(simpleMailMessage.getFrom()); //设置发件人Email messageHelper.setSubject(subject); //设置邮件主题 if(isHtml) { messageHelper.setText(content,true); //设置邮件主题内容(html格式) } else { messageHelper.setText(content); //设置邮件主题内容 } messageHelper.setTo(to); //设定收件人Email FileSystemResource file = new FileSystemResource(fileAttachment); messageHelper.addAttachment(file.getFilename(), file); //添加附件 javaMailSender.send(mimeMessage); } /** * 发送邮件 (包含附件) * @param subject 主题 * @param content 内容 * @param classPathResource 附件文件(附加在项目内部时候) * @param isHtml 内容是否是html格式 * @param to 发送的邮箱地址 * @throws MessagingException */ public void sendMail(String subject, String content,boolean isHtml, ClassPathResource classPathResource,String to) throws MessagingException { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); /** * new MimeMessageHelper(mimeMessage,true)之true个人见解: * 关于true参数,官方文档是这样解释的: * use the true flag to indicate you need a multipart message * 翻译过来就是:使用true,以表明你需要多个消息 * 再去翻一下MimeMessageHelper的API,找到这样一句话: * supporting alternative texts, inline elements and attachments * 也就是说,如果要支持内联元素和附件就必须给定第二个参数为true * 否则抛出 java.lang.IllegalStateException 异常 */ MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true,"UTF-8"); messageHelper.setFrom(simpleMailMessage.getFrom()); //设置发件人Email messageHelper.setSubject(subject); //设置邮件主题 if(isHtml) { messageHelper.setText(content,true); //设置邮件主题内容(html格式) } else { messageHelper.setText(content); //设置邮件主题内容 } messageHelper.setTo(to); //设定收件人Email /** FileSystemResource file = new FileSystemResource(fileAttachment); * ClassPathResource:很明显就是类路径资源,我这里的附件是在项目里的,所以需要用ClassPathResource * 如果是系统文件资源就不能用ClassPathResource,而要用FileSystemResource,例: * ClassPathResource file = new ClassPathResource("attachment/Readme.txt"); */ /** * MimeMessageHelper的addAttachment方法: * addAttachment(String attachmentFilename, InputStreamSource inputStreamSource) * InputStreamSource是一个接口,ClassPathResource和FileSystemResource都实现了这个接口 //发送附件邮件 */ ClassPathResource file = classPathResource; messageHelper.addAttachment(file.getFilename(), file); //添加附件 javaMailSender.send(mimeMessage); } //Spring 依赖注入 @Resource public void setSimpleMailMessage(SimpleMailMessage simpleMailMessage) { this.simpleMailMessage = simpleMailMessage; } //Spring 依赖注入 @Resource public void setJavaMailSender(JavaMailSender javaMailSender) { this.javaMailSender = javaMailSender; }}
Demo
package com.bookmarksClouds.test;import javax.mail.MessagingException;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.bookmarksClouds.util.EmailUtil;public class EmailUtilTest{ private ApplicationContext factory = new ClassPathXmlApplicationContext( new String[] {"spring/spring-smtp-mail-attachment.xml"});@Testpublic void test() {EmailUtil mail = (EmailUtil)factory.getBean("simpleMail");String html= "<html><head><META http-equiv=Content-Type content='text/html; charset=UTF-8'><title>云书签注册激活</title></head><body>欢迎使用,云书签。<br/><a href='www.baidu.com' >云书签</a><br>点击上面超链接 激活账户信息!</body><html>"; try {mail.sendMail("云书签注册自动发邮件", html,true, "***@qq.com");} catch (MessagingException e) {System.out.println("发送邮件失败!");//e.printStackTrace();}}}
Spring配置文件
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd"> <context:annotation-config/><context:component-scan base-package="com.bookmarksClouds"/> <bean id ="mailSender" class ="org.springframework.mail.javamail.JavaMailSenderImpl" > <!-- 服务器 --> <property name ="host" value ="smtp.163.com" /> <!-- 端口号 --> <property name ="port" value ="25" /> <!-- 用户名 --> <property name ="username" value ="邮箱地址" /> <!-- 密码 --> <property name ="password" value ="邮箱密码" /> <!-- SMTP服务器验证 --> <property name ="javaMailProperties" > <props > <!-- 验证身份 --> <prop key ="mail.smtp.auth" > true </prop > </props > </property > </bean > <bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage"> <!-- 发件人email --> <property name="from" value="发送邮箱地址" /> <!-- 收件人email <property name="to" value="to@yeah.net" /> email主题(标题) <property name="subject" value="Subject" /> email主题内容 <property name="text"> <value>ContentText</value> </property> --> </bean> </beans>
0 0
- Spring发送邮件总结(附源码)
- Spring发送邮件小结(附源码)
- spring邮件发送问题总结
- 一组实现邮件发送功能的c++封装类(附源码)
- 使用Spring JavaMail发送邮件总结
- 使用Spring JavaMail发送邮件总结
- spring邮件发送,正文附件发送的源码
- Spring 发送邮件 (2) Spring版
- spring+mail+maven(spring 发送邮件)
- 使用spring实现邮件的发送(含测试,源码,注释)
- JavaMail发送邮件和附件(源码)
- JavaMail发送邮件和附件(源码)
- JavaMail发送邮件和附件(源码)
- C++ 发送邮件(C++源码)
- java发送邮件源码
- C#发送邮件源码
- C# 发送邮件源码
- .net发送邮件源码
- 黑马程序员——java编程基础(三)数组
- Aizu 1311 Test Case Tweaking(spfa变形,dp)
- c++成员函数的重载、覆盖、隐藏区别
- Linux多线程一
- android onlayout参数
- Spring发送邮件总结(附源码)
- Self-define float4 vector
- 第2章2节《MonkeyRunner源码剖析》了解你的测试对象: NotePad窗口Activity之NotesList简介(原创)
- Android 点击EditText以外区域键盘消失
- 解决iframe跨域问题
- java 反射 根据属性 动态设置值
- 抽象工厂模式
- const 指针与指向const的指针
- c语言3月4日学习总结