1.pom.xml配置依赖
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.4</version> </dependency>
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency>
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency>
2.还得有一个邮件的服务类:
import org.springframework.core.io.FileSystemResource; import org.springframework.mail.MailSender; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.MimeMessageHelper; import java.io.File; import javax.annotation.Resource; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.mail.javamail.JavaMailSender; /** * ----------------------------------------- * 文件: Email.java * 描述: 发送邮箱得服务类 * ----------------------------------------- */
public class Email { private static final Logger logger = LoggerFactory.getLogger(Email.class); private MailSender mailSender; private SimpleMailMessage simpleMailMessage; @Resource private JavaMailSender myMails; /** * 方法名: sendMail * 参数名:@param subject 邮件主题 * 参数名:@param content 邮件主题内容 * 参数名:@param to 收件人Email地址 * 描述语: 发送邮件 */ public void sendMail(String subject, String content, String to) { simpleMailMessage.setSubject(subject); //设置邮件主题 simpleMailMessage.setTo(to); //设定收件人 simpleMailMessage.setText(content); //设置邮件主题内容 mailSender.send(simpleMailMessage); //发送邮件 } //Spring 依赖注入 public void setSimpleMailMessage(SimpleMailMessage simpleMailMessage) { this.simpleMailMessage = simpleMailMessage; } //Spring 依赖注入 public void setMailSender(MailSender mailSender) { this.mailSender = mailSender; } /** * * @Description:普通文本发邮件形式 * @param subject 主题 * @param content 正文 * @param toMail 收件人邮箱 * void * @exception: */ public void sendSimpleMail(String subject,String content,String toMail) { simpleMailMessage.setSubject(subject); simpleMailMessage.setText(content); simpleMailMessage.setTo(toMail); mailSender.send(simpleMailMessage); logger.info("邮件发送成功.."); } /** * * @Description:html发邮件形式 * @param subject 主题 * @param content 正文 * @param toMail 收件人邮箱 * void * @exception: */ public void sendHtmlMail(String subject,String content,String toMail) { MimeMessage mailMessage = myMails.createMimeMessage(); MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage); try { messageHelper.setTo(toMail); messageHelper.setSubject(subject); messageHelper.setText("<html><head></head><body><h1>"+content+"</h1></body></html>",true); myMails.send(mailMessage); } catch (MessagingException e) { e.printStackTrace(); } } /** * * @Description: 带图片发邮件形式 * @param subject 主题 * @param content 正文 * @param toMail 收件人邮箱 * @param picturePath 图片路径 * void * @exception: */ public void sendPictureMail(String subject,String content,String toMail,String picturePath){ MimeMessage mailMessage = myMails.createMimeMessage(); MimeMessageHelper messageHelper; try { messageHelper = new MimeMessageHelper(mailMessage,true); messageHelper.setTo(toMail); messageHelper.setSubject(subject); //messageHelper.setText("<html><head></head><body><h1>" + content +"</h1><img src=/"+cid:aaa + /"/></body></html>",true); FileSystemResource img = new FileSystemResource(new File(picturePath)); messageHelper.addInline("aaa",img); //发送邮件 myMails.send(mailMessage); } catch (MessagingException e) { e.printStackTrace(); } } /** * * @Description:带附件发邮件形式 * @param subject 标题 * @param content 正文 * @param toMail 收件人邮箱 * @param accessoryPath 附件路径 * @param accessoryName 附件名 * void * @exception: */ public void sendMailTakeAccessory(String subject,String content,String toMail,String accessoryPath,String accessoryName){ MimeMessage mailMessage = myMails.createMimeMessage(); MimeMessageHelper messageHelper; try { messageHelper = new MimeMessageHelper(mailMessage,true,"utf-8"); messageHelper.setTo(toMail); messageHelper.setSubject(subject); messageHelper.setText("<html><head></head><body><h1>"+content+"</h1></body></html>",true); FileSystemResource file = new FileSystemResource(new File(accessoryPath)); messageHelper.addAttachment(accessoryName,file); myMails.send(mailMessage); } catch (MessagingException e) { e.printStackTrace(); } }
3.spring_mail.xml配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
<!-- 第一种方式 -->
<
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
="yourMailName@163.com" /><!-- 密码 -->
<property name="password" value="yourPassword" /><!-- SMTP服务器验证 --> < property name ="javaMailProperties" > < props > <!-- 验证身份 --> < prop key ="mail.smtp.auth" >true </ prop > </ props > </ property > </ bean > <!-- 目前我用过的EMAIL账号都是网易的,下面列出网易的SMTP服务器名和端口号: 网易邮箱 SMTP服务器 SMTP端口 POP3服务器 POP3端口 @126.com smtp.126.com 25 pop3.126.com 110 @163.com smtp.163.com 25 pop3.163.com 110 @yeah.net smtp.yeah.net 25 pop3.yeah.net 110 --> < bean id ="simpleMailMessage" class ="org.springframework.mail.SimpleMailMessage" > <!-- 发件人email --> < property name ="from" value ="yourMailName@163.com" />
</ bean > < bean id ="simpleMail" class ="com.ssm.pojo.Email" > < property name ="mailSender" ref ="mailSender" /> < property name ="simpleMailMessage" ref ="simpleMailMessage" /> </ bean >
<!-- 第二种方式 -->
<
bean
id
="myMails"
class
="org.springframework.mail.javamail.JavaMailSenderImpl"
>
<
property
name
="defaultEncoding"
value
="UTF-8"
/>
<!-- 服务器 -->
<
property
name
="host"
value
="smtp.163.com"
/>
<!-- 端口号 -->
<!--<property name="port" value="25" />-->
<!-- 用户名 -->
<
property
name
="username"
value
="yourMailName@163.com" /><!-- 密码 --> < property name ="password" value ="yourPassword" /> < property name ="javaMailProperties" > < props > <!-- 设置认证开关 --> < prop key ="mail.smtp.auth" >true </ prop > <!-- 启动调试开关 --> < prop key ="mail.debug" >true </ prop > <!-- 设置发送延时 --> < prop key ="mail.smtp.timeout" >2500 </ prop > < prop key ="mail.smtp.socketFactory.class" >javax.net.ssl.SSLSocketFactory </ prop > < prop key ="mail.smtp.port" >465 </ prop > < prop key ="mail.smtp.socketFactory.port" >465 </ prop > </ props > </ property > </ bean > </ beans >
4.一个简单的入口类
import com.ssm.pojo.Email; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MyMail { public static void main(String[] args) { MyMail.testSendMail(); } public static void testSendMail() { ApplicationContext context = new ClassPathXmlApplicationContext("spring_mail.xml"); Email mail = (Email)context.getBean("simpleMail"); mail.sendMail("hello", "hello world,程序如此简单", "[email protected]"); //mail.sendMail("标题", "内容", "收件人邮箱"); mail.sendSimpleMail("hello", "hello world,程序如此简单", "yourMailName@163.com"); } }5.或者一个简单 Controller
@Resource private Email mail;
@RequestMapping("/sendMail") public void sendMails(){ mail.sendMail("您好", "hello world", "[email protected]"); }