一、使用Spring API 实现邮件发送
这里以qq邮箱为例。
1.1 环境准备
创建 Maven 项⽬,在 pom.xml ⽂件中添加依赖
<!--引入spring坐标依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.4.RELEASE</version>
</dependency>
<!--spring 上下文环境 支持-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.2.4.RELEASE</version>
<scope>test</scope>
</dependency>
<!-- Java Mail坐标依赖 -->
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
1.2 配置邮件发送 bean
<?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:component-scan base-package="com.shsxt" />
<!-- 邮件发送器(提供了邮件发送接口、透明创建Java Mail的MimeMessage、及邮件发送的配置) -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.qq.com"/>
<property name="port" value="587"/>
<property name="defaultEncoding" value="utf-8"></property>
<property name="username" value="1429076385"></property>
<property name="password" value="caylifmwexpdhaje"></property>
</bean>
<!-- 普通文本邮件对象 -->
<bean id="templataMessage" class="org.springframework.mail.SimpleMailMessage">
<property name="from" value="1429076385@qq.com"></property>
<property name="subject" value="spring_mail"/>
</bean>
</beans>
1.3 定义接口与实现类
/**
* 定义接口
*/
public interface OrderManager {
void placeOrder();
}
/*
定义实现类
*/
@Service
public class SimpleOrderManager implements OrderManager{
@Resource
private JavaMailSenderImpl mailSender;
@Resource
private SimpleMailMessage templateMessage;
@Override
public void placeOrder() {
// 获取邮件对象
SimpleMailMessage msg = new SimpleMailMessage(this.templateMessage);
// 设置邮件收件人的邮箱地址
msg.setTo("1429076385@qq.com");
// 设置邮件内容
msg.setText("Hello Spring Mail");
try{
//发送邮件
this.mailSender.send(msg);
}catch (MailException ex){
System.err.println(ex.getMessage());
}
}
}
1.4 邮件发送测试
/**
* 发送邮件
*/
public class Test01 {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
SimpleOrderManager simpleOrderManager = (SimpleOrderManager) ac.getBean("simpleOrderManager");
simpleOrderManager.placeOrder();
}
}
1.5 发送附件
/**
* 发送包含附件的邮件
* @param args
* @throws MessagingException
*/
public static void main(String[] args) throws MessagingException {
ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
JavaMailSender mailSender= (JavaMailSender) ac.getBean("mailSender");
MimeMessage message= mailSender.createMimeMessage();
message.setSubject("spring_mail"); // 邮件主题
// 创建带有附件的消息帮组类
MimeMessageHelper helper = new MimeMessageHelper(message,true,"utf-8");
helper.setTo(new InternetAddress("收件⼈的邮箱地址"));//设置接收⼈
helper.setText("Thank you for ordering!"); // 邮件内容
helper.setFrom("发件⼈的邮箱地址"); // 发件⼈
// 设置附件
File file = new File("C:\\work\\邮件附件.txt");
// 添加附件
helper.addAttachment(file.getName(), file);
// 发送邮件
mailSender.send(message);
}