SpringCloud实战-邮件

介绍

  • 基础是发送邮件
  • 发送一定内容的邮件
  • 发送什么类型的邮件
    • HTML
    • 图片
    • 附件

功能

  • 发送邮件
  • 答案之书

准备

  • 引入jar包
  • 配置邮箱参数
  • 封装SimpleMailMessage
  • JavaMailSender发送邮件

实战

配置:

1
2
3
4
5
6
spring.mail.host=smtp.qq.com
spring.mail.port=25
spring.mail.username=xxx@qq.com
spring.mail.password=xxx
spring.mail.default-encoding=UTF-8
spring.mail.jndi-name=mail/Session

发送简单文本邮件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@Service
public final class MailService {
@Value("${spring.mail.username}")
private String from;

@Autowired
private JavaMailSender mailSender;

public void sendSimpleMail(
String to,
String subject,
String content) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
message.setSubject(subject);
message.setText(content);
mailSender.send(message);
}
}

实时天气查询

下面的接口可获得城市天气情况:

实况天气获取:http://www.weather.com.cn/data/sk/城市代码.html
城市信息获取:http://www.weather.com.cn/data/cityinfo/城市代码.html
详细指数获取:http://www.weather.com.cn/data/zs/城市代码.html

  1. 将城市代码插入数据库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

//连接
mysql> create database web;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
| web |
+--------------------+
6 rows in set (0.00 sec)

GRANT ALL ON *.* TO root@'%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;

//创建表
create table if not exists weather_county_code(
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
c_id INT NOT NULL ,
c_name VARCHAR(10) NOT NULL,
c_code INT NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
mysql> use web;
Database changed
mysql> create table if not exists weather_county_code(
-> id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
-> c_id INT NOT NULL,
-> c_name VARCHAR(10) NOT NULL,
-> c_code INT NOT NULL
-> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.03 sec)

mysql> show tables;
+---------------------+
| Tables_in_web |
+---------------------+
| weather_county_code |
+---------------------+
1 row in set (0.00 sec)

//导入文本数据
LOAD DATA LOCAL INFILE 'county_code1.txt' INTO TABLE weather_county_code;
// ","分隔符
LOAD DATA LOCAL INFILE 'county_code.txt' INTO TABLE weather_county_code FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

//导入失败, 删除数据 DELETE FROM table_name [WHERE Clause]
DELETE FROM weather_county_code;

mysql> select * from weather_county_code;
+------+--------+----------------+-----------+
| id | c_id | c_name | c_code |
+------+--------+----------------+-----------+
| 1 | 10101 | 北京 | 101010100 |
| 2 | 10102 | 海淀 | 101010200 |
| 3 | 10103 | 朝阳 | 101010300 |
| 4 | 10104 | 顺义 | 101010400 |
| 5 | 10105 | 怀柔 | 101010500 |
| 6 | 10106 | 通州 | 101010600 |
| 7 | 10107 | 昌平 | 101010700 |
| 8 | 10108 | 延庆 | 101010800 |
| 9 | 10109 | 丰台 | 101010900 |
| 10 | 10110 | 石景山 | 101011000 |
| 11 | 10111 | 大兴 | 101011100 |
| 12 | 10112 | 房山 | 101011200 |
| 13 | 10113 | 密云 | 101011300 |
| 14 | 10114 | 门头沟 | 101011400 |
| 15 | 10115 | 平谷 | 101011500 |
| 16 | 20101 | 上海 | 101020100 |
| 17 | 20102 | 闵行 | 101020200 |

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' identified by '123456';

//乱码解决
show create table weather_county_code \G;
在末尾ENGINE=InnoDB DEFAULT CHARSET=UTF-8;

set character_set_server=utf8;
set character_set_database=utf8;
show variables like '%char%';

答案之书

1
2
3
4
5
6
7
8
CREATE TABLE IF NOT EXISTS t_book_answer(
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
content VARCHAR(25) NOT NULL,
content_en VARCHAR(100)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

# 导入数据
LOAD DATA LOCAL INFILE 'thebookofanswer_mysql.txt' INTO TABLE t_book_answer FIELDS TERMINATED BY ':' LINES TERMINATED BY '\n';

错误处理

  • 421 HL:ICC 该IP同时并发连接数过大
  • 451 Requested mail action not taken: too mach fail 登录失败次数过多, 被临时禁止登录
  • 553 authentication is required 认证失败

  • spring boot连接失败:

1
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/web?autoReconnect=true&characterEncoding=utf-8&useSSL=false&&serverTimezone=GMT%2B8 //关闭时区认证

P.S

  1. 不能执行
1
2
[root@VM_0_13_centos ~]# java -jar spring-boot-mail-0.0.1.jar 
no main manifest attribute, in spring-boot-mail-0.0.1.jar
  1. 后台进程运行
1
nohup java -jar mail-0.0.1.jar >/dev/null 2>&1 &
  1. 打包
1
2
mvn clean package -Dmaven.test.skip=true
mvn package -Dmaven.test.skip=true
Donate comment here