邮件任务
简单邮件
导入邮件依赖
<!--导入邮件依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
application.properties
spring.mail.username=2121007706@qq.com
#你的qq授权码 在设置账户开启服务:
#POP3/SMTP服务 (如何使用 Foxmail 等软件收发邮件?)设为启用即可
spring.mail.password=你的qq授权码
spring.mail.host=smtp.qq.com
#开启加密验证
spring.mail.properties.mail.smtp.ssl.enable=true
在测试类进行测试
package com.yuan;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.io.File;
import java.util.logging.Filter;
@SpringBootTest
class DemoApplicationTests {
@Autowired
JavaMailSenderImpl javaMailSender;
@Test
void contextLoads() {
//一个简单的邮件
SimpleMailMessage message=new SimpleMailMessage();
message.setSubject("邮件标题");
message.setText("邮件内容");
message.setTo("2121007706@qq.com");//发件人
message.setFrom("2121007706@qq.com");//收件人
javaMailSender.send(message);//开始发送邮件
}
@Test
void contextLoads2() throws MessagingException {
//一个复杂的邮件
MimeMessage message = javaMailSender.createMimeMessage();
//组装
MimeMessageHelper helper = new MimeMessageHelper(message, true);
//正文
helper.setSubject("标题");
helper.setText("<p style='color:red'>内容</p>",true);
//附件
helper.addAttachment("aa.jpg",new File("D:\\__MACOSX\\高清大图\\aa.jpg"));
helper.setTo("2121007706@qq.com");
helper.setFrom("2121007706@qq.com");
javaMailSender.send(message);
}
}
Spring boot定时发送邮件
导入依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<!-- httpclient 依赖 -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.12</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
</dependencies>
<!--打包插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
scheduled包下的MyScheduled类
package com.any.scheduled;
import com.any.pojo.Miss;
import com.any.send.SendMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.sql.Time;
import java.util.Date;
/**
* 功能描述: 定时任务执行
*
* @param:
* @return:
*/
@Component
public class MyScheduled {
@Autowired
private SendMessage sendMessage;
/*每天下午5:20执行此方法*/
@Scheduled(cron ="0 20 17 * * *")
public void dsrw(){
String message = sendMessage.getOneS();
sendMessage.sendMessage("来自Sometimes的消息!❤",message);
System.out.println(new Date().toLocaleString() +" 发送消息:" + message);
}
}
send包下的SendMessage
package com.any.send;
import com.any.pojo.Miss;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.IOException;
/**
* @describe
* @author: AnyWhere
*/
@Component
public class SendMessage {
@Autowired
private JavaMailSender mailSender;
@Value("${spring.mail.username}")
private String from;
@Value("${she.mail}")
private String[] sheMail;
public void sendMessage(String subject,String message) {
try {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
helper.setFrom(from);
helper.setTo(sheMail);
helper.setSubject(subject);
helper.setText(message);
mailSender.send(helper.getMimeMessage());
} catch (MessagingException e) {
e.printStackTrace();
}
}
public void sendHtmlMessage(String subject,String message){
try {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
helper.setFrom(from);
helper.setTo(sheMail);
helper.setSubject(subject);
helper.setText(message,true);//true 使用html 方式发送
mailSender.send(helper.getMimeMessage());
} catch (MessagingException e) {
e.printStackTrace();
}
}
public static String getOneS(){
try {
//创建客户端对象
HttpClient client = HttpClients.createDefault();
/*创建地址 https://du.shadiao.app/api.php*/
HttpGet get = new HttpGet("https://chp.shadiao.app/api.php");
//发起请求,接收响应对象
HttpResponse response = client.execute(get);
//获取响应体,响应数据是一种基于HTTP协议标准字符串的对象
//响应体和响应头,都是封装HTTP协议数据。直接使用可能出现乱码或解析错误
HttpEntity entity = response.getEntity();
//通过HTTP实体工具类,转换响应体数据
String responseString = EntityUtils.toString(entity, "utf-8");
return responseString;
} catch (IOException e) {
throw new RuntimeException("网站获取句子失败");
}
}
}
启动类
/**
* @describe
* @author: AnyWhere
*/
@EnableScheduling
@SpringBootApplication
public class BiaoBaiApp {
public static void main(String[] args) {
SpringApplication.run(BiaoBaiApp.class,args);
}
}
application.yml
spring:
mail:
username: xxxxxx@qq.com # 邮箱地址
password: xxxxxxxxxxx # SMTP|POP3|IMAP协议授权码
host: smtp.qq.com # 服务器地址。参考邮箱服务运营商提供的信息。
properties:
mail:
smtp:
auth: true # 开启smtp协议验证
port: 587
# 发给谁的邮箱
she:
mail: XXXXXXX@qq.com
TestSendMessage测试类
// import com.any.BiaoBaiApp;
// import com.any.pojo.Miss;
// import com.any.send.SendMessage;
// import com.fasterxml.jackson.core.JsonParser;
// import com.fasterxml.jackson.databind.ObjectMapper;
// import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider;
// import net.minidev.json.writer.BeansMapper;
// import org.apache.http.HttpEntity;
// import org.apache.http.HttpResponse;
// import org.apache.http.client.HttpClient;
// import org.apache.http.client.methods.HttpGet;
// import org.apache.http.impl.client.HttpClients;
// import org.apache.http.util.EntityUtils;
// import org.json.JSONException;
// import org.json.JSONObject;
// import org.junit.Test;
// import org.junit.runner.RunWith;
// import org.springframework.beans.factory.annotation.Autowired;
// import org.springframework.boot.json.JacksonJsonParser;
// import org.springframework.boot.test.context.SpringBootTest;
// import org.springframework.test.context.junit4.SpringRunner;
// import java.io.IOException;
// import java.sql.Time;
// import java.util.Date;
/**
* @describe 测试代码可用性
* @author: AnyWhere
* @date 2020/12/15 12:21
*/
// @SpringBootTest(classes = {BiaoBaiApp.class})
// @RunWith(SpringRunner.class)
// public class TestSendMessage {
// @Autowired
// private SendMessage sendMessage;
// @Test
// public void Test() {
// String oneS = sendMessage.getOneS();
// System.out.println(oneS);
// System.out.println(new Date().toLocaleString() + " 发送消息:" + oneS);
// sendMessage.sendMessage("来自Sometimes的消息!❤", oneS);
// }
// @Test
// public void test2() {
// try {
// //创建客户端对象
// HttpClient client = HttpClients.createDefault();
// //创建地址 https://chp.shadiao.app/api.php
// HttpGet get = new HttpGet("http://open.iciba.com/dsapi/");
// //发起请求,接收响应对象
// HttpResponse response = client.execute(get);
// //获取响应体,响应数据是一种基于HTTP协议标准字符串的对象
// //响应体和响应头,都是封装HTTP协议数据。直接使用可能出现乱码或解析错误
// HttpEntity entity = response.getEntity();
// //通过HTTP实体工具类,转换响应体数据
// String string = EntityUtils.toString(entity, "utf-8");
// ObjectMapper mapper = new ObjectMapper();
// // json字符串转换为java对象
// Miss miss = mapper.readValue(string, Miss.class);
// System.out.println(miss.getContent() + "\n\n" + miss.getNote());
// System.out.println(miss.toString());
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
// }