您的位置:首页 > Web前端 > HTML

Spring代码实例系列-10:通过Spring Mail发送简单邮件、附件和HTML邮件

2018-01-13 12:13 1296 查看
超级通道:Spring代码实例系列-绪论

本章通过Spring Mail实现了简单邮件、附件和HTML邮件的发送,涉及的主要知识点:

1. Spring mail实现:JavaMailSenderImpl

2. 简单消息:SimpleMailMessage

3. 扩展:MimeMessage

4. MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型

4. 自定义邮件模板:MailTemplate

0.开启SMTP服务和获取授权码

通过某个邮箱进行第三方邮件发送时,需要登陆此邮箱开启SMTP服务并获取授权码。

本例以163作为发送端邮件

1. 开启SMTP的步骤是:登陆邮箱–>设置–>POP3/SMTP/IMAP–>开启

2. 获取授权码的步骤是:登陆邮箱–>设置–>客户端授权密码–>开启(开启授权码有风险,记得开发完成后关闭此功能)

3. 关于
授权码
的说明:通过Java发送邮件是,需要setPassword,这里的Password就是所谓的
授权码
,而非邮箱的登陆密码。

4. 163邮箱的SMTP服务器: smtp.163.com,端口号是25。

5. 关于邮箱的服务器和端口号,可以参考常用的邮箱服务器(SMTP、POP3)地址、端口

1.目录结构

project
\---src
\---main
\---java
|   \---pers
|       \---hanchao
|           \---mail
|               \---App.java
|               \---MailUtils.java
|               \---MailTemplate.java
\---resources
\---spring-config
\---spring-mail.xml
\---spring-mail.properties


2.App.java

package pers.hanchao.mail;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import javax.mail.MessagingException;

/**
* <p>简单对Spring mail的应用:简单消息邮件、附件邮件以及html邮件</p>
* @author hanchao 2018/1/13 11:36
**/
public class App {

public static void main(String[] args) throws MessagingException {
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config/spring-mail.xml");
MailUtils mailUtils = (MailUtils) context.getBean("mailUtils");
mailUtils.sendSimpleMail("******@163.com","******@163.com",
"简单邮件测试","这是一个简单邮件发送示例:Hello World");

String attachPath = "C:\\Users\\hanchao\\Pictures\\Saved Pictures\\红狼.jpg";
mailUtils.sendMimeMail("******@163.com","******@163.com",
"HTML邮件测试","这是一个HTML邮件发送示例:Hello World",MailTemplate.TEMPLATE_TEST,attachPath);
}
}


3.MailUtils.java

package pers.hanchao.mail;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;

/**
* <p>简单的邮件工具类,实现了简单邮件、附件和html邮件的发送</p>
* @author hanchao 2018/1/13 11:48
**/
@Component
public class MailUtils {
@Autowired
private JavaMailSenderImpl javaMailSender;

/**
* <p>通过JavaMailSenderImpl.send(SimpleMailMessage)发送简单消息</p>
* @author hanchao 2018/1/13 9:56
**/
public void sendSimpleMail(String from,String to,String subject,String message){
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(from);
simpleMailMessage.setTo(to);
simpleMailMessage.setSubject(subject);
simpleMailMessage.setText(message);
//发送邮件
javaMailSender.send(simpleMailMessage);
}

/**
* <p>通过JavaMailSenderImpl.send(MimeMessage)以及MimeMessageHelper发送HTML内容和附件</p>
* @author hanchao 2018/1/13 11:37
**/
public void sendMimeMail(String from,String to,String subject,String message,int template,String attachPath) throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
//通过MimeMessageHelper进行邮件内容的设置
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
mimeMessageHelper.setFrom(from);
mimeMessageHelper.setTo(to);
mimeMessageHelper.setSubject(subject);
//发送html内容
mimeMessageHelper.setText(MailTemplate.getText(MailTemplate.TEMPLATE_TEST,message),true);
//发送附件
File testAttach = new File(attachPath);
if (testAttach.exists()){
mimeMessageHelper.addAttachment("test.jpg",testAttach);
}
//发送邮件
javaMailSender.send(mimeMessage);
}
}


4.MailTemplate.java

package pers.hanchao.mail;

/**
* <p>邮件模板示例</p>
* @author hanchao 2018/1/13 11:36
**/
public class MailTemplate {
public static final int TEMPLATE_TEST = 1;

public static String getText(int templateType,String message){
switch (templateType){
case 1:
return "<html>\n" +
"<body style=\"background-color:PowderBlue;\">\n" +
"<p style=\"font-family:times;color:green;font-size:30px\">\n" +
message + "</p>\n" +
"</body>\n" +
"</html>";
default:
return message;
}
}
}


5.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"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 
<!--开启注解-->
<context:annotation-config/>

<!--开启component扫描-->
<context:component-scan base-package="pers.hanchao.*"/>

<!--通过spring-mail.properties配置属性-->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="fileEncoding" value="UTF-8"/>
<property name="location" value="spring-mail.properties"/>
</bean>

<!--spring实现的JavaMail-->
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.host}"/>
<property name="port" value="${mail.port}"/>
<property name="defaultEncoding" value="${mail.encode}"/>
<property name="username" value="${mail.username}"/>
<property name="password" value="${mail.password}"/>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.smtp.timeout">20000</prop>
</props>
</property>
</bean>
</beans>


6.spring-mail.properties

mail.host=smtp.163.com
mail.port=25
mail.encode=utf-8
mail.username=******5272@163.com
#授权码,而非邮箱的登陆密码
mail.password=******


7.result

7.1.简单邮件



7.2.扩展邮件

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐