一、引言

最近看到一篇用js代码实现表白的文章,深有感触。

然后发现自己也可以用java代码实现,然后就开始写代码了,发现还挺有意思的,话不多说开搞

实现思路:

使用HttpClient远程获取彩虹屁生成器网站中的内容 网站:https://chp.shadiao.app/

java Mail 实现发送邮件

SpringBoot 整合Scheduled 实现定时发送邮件

二、搭建项目

项目环境在SpringBoot框架基础上,加入邮件发送mail、RPC远程调用httpclient、Scheduled 的一个Maven项目,依赖如下:

`org.springframework.boot

spring-boot-starter-parent

2.3.2.RELEASE

org.springframework.boot

spring-boot-starter-mail

org.springframework

spring-context-support

org.apache.httpcomponents

httpclient

4.5.12

org.springframework.boot

spring-boot-maven-plugin

true`

二、编写配置

在编写配置前需要,在浏览器登录自己的邮箱在账号安全中设置开启POP3/SMTP服务

开始开启POP3/SMTP服务需要输入验证码

复制授权码

勾选SMTP发信后保存到服务器,勾选这一项主要是可以看到自己发送了什么信息,不勾选此项。邮件消息发送成功后,邮箱内看不到自己已发送的信息

根据授权码编写配置

`spring:

mail:

username: xxxxxx@qq.com # 自己邮箱地址

password: xxxxxxx # SMTP|POP3|IMAP协议授权码

host: smtp.qq.com # 服务器地址。参考邮箱服务运营商提供的信息。

properties:

mail:

smtp:

auth: true # 开启smtp协议验证

port: 587

# 发给谁的邮箱

she:

mail: xxxxxxx@163.com`

四、编写SpringBoot启动类

`@EnableScheduling

@SpringBootApplication

public class BiaoBaiApp {

public static void main(String[] args) {

SpringApplication.run(BiaoBaiApp.class,args);

}`

五、自动生成发送内容

`@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 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("网站获取句子失败");

}

}

}`

六、编写定时任务

`@Component

public class MyScheduled {

@Autowired

private SendMessage sendMessage;

/*定时执行任务方法 每天5点20执行该任务*/

@Scheduled(cron ="0 20 17 * * *")

public void dsrw(){

String message = sendMessage.getOneS();

sendMessage.sendMessage("来自清茶淡粥的消息!❤",message);

}

}`

七、打包运行

有条件的可以吧jar包放在运服务器上,没有条件的可以在本地win10系统上添加定时任务,每天定时执行jar包。

jar包放在服务器上需要放行端口:587 ,防火墙放行587端口

除了放行,还有放行 http 端口 和 https端口

然后在linux上后台启动jar包

`nohup java -jar jar包 >test.log &`

win10 定时运jar 包 在任务计划程序中创建任务

新建触发器

新建操作,在程序或脚本输入执行的jar命令,点击确定

然后可以看见,创建好的任务

八、总结

代码还有很大的提升,也有很多不足之处。

由于时间原因,可优化的地方还很多,比如:发送单纯的文字内容的邮件,不美观,可以实现html方式发送邮件,使发送邮件内容更加美观。

`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();

}`

项目推荐:

用Java写句情话_程序员的浪漫:用 java 实现每天给对象法发情话相关推荐

  1. python 程序员专属情话_程序员最浪漫情话

    程序员往往城还没攻下来,我们的头发就先掉下来! 程序员最浪漫情话: 段子一 "等我敲完这行代码,就和你离婚!" 他头也不抬的说 听完之后,她心里暖暖的 她想,这可能是最长情的承诺. ...

  2. java数据库的量级_程序员学Python还是Java?分析了8张图后得出这个结论

    Java和Python两门语言都是目前非常热门的语言,可谓北乔峰南慕容,二者不分上下,棋逢对手.但是对于初学者来说,非常困惑,因为时间和精力有限,上手必须要先学一门,到底选那个好呢,今天3分钟带你透彻 ...

  3. java语言情话_程序员的浪漫:用 java 实现每天给对象法发情话

    一.引言 最近看到一篇用js代码实现表白的文章,深有感触. 然后发现自己也可以用java代码实现,然后就开始写代码了,发现还挺有意思的,话不多说开搞 实现思路: 使用HttpClient远程获取彩虹屁 ...

  4. Java说情话_程序员的浪漫:用 java 实现每天给对象法发情话

    一.引言 最近看到一篇用js代码实现表白的文章,深有感触. 然后发现自己也可以用java代码实现,然后就开始写代码了,发现还挺有意思的,话不多说开搞 实现思路: 使用HttpClient远程获取彩虹屁 ...

  5. java vo命名规则_程序员必知的Java基础:5条命名规范和8种数据类型归纳

    一.Java命名规范 任何一种语言都有一套针对于语言自身的命名的规范,java也不例外.接下来,我就列举一下java对命名的规范. 下面重点来了,准备好了嘛? 1.代码中的命名均不能以下划线或美元符号 ...

  6. java占位符填充_程序员:深入理解Java虚拟机,对象的内存布局

    在 HotSpot 虚拟机中,对象在内存中存储的布局分为 3 块区域:对象头 ( Header ) .实例数据 ( InstanceData ) 和对齐填充 (Padding) . 一.对象的内存布局 ...

  7. java 字符串转骆驼命名_程序员必知的Java基础:5条命名规范和8种数据类型归纳...

    原标题:程序员必知的Java基础:5条命名规范和8种数据类型归纳 一.Java命名规范 任何一种语言都有一套针对于语言自身的命名的规范,java也不例外.接下来,我就列举一下java对命名的规范. 下 ...

  8. java实现心形图案|桃心_程序员的浪漫--java打印心形图案

    原标题:程序员的浪漫--java打印心形图案 谁说程序员不能浪漫 单纯的心 双心 加些点缀 代码所用方程: 心:((0.05*x)^2 + (0.1*y)^2-1)^3-(0.05*x)^2 * (0 ...

  9. 夸奖对方代码写的好_程序员名言(赞美程序员的句子)

    程序员名言(赞美程序员的句子) 来源:www.yuezhilong.com 时间:2019-09-28 11:55:17 责编:粤之龙文学网 人气:2395 赞美程序员的句子 1. 在你责怪别人之前, ...

最新文章

  1. 转变矛头,号称攻破BCH网络的Bitpico或与BCE决裂
  2. Git 自救指南:这些坑你都跳得出吗?
  3. 关于sql和MySQL的语句执行顺序
  4. OpenGL 点光源阴影Point Shadows
  5. [MySQL光速入门]012 作业解答
  6. 春节福利:《Oracle性能优化与诊断案例精选》电子版首次公开下载
  7. 蔡司数码视疲劳测试软件_居家办公期间,频繁使用电子数码产品小心患上这种眼病...
  8. 第四阶段 15_Linux tomcat安装与配置
  9. 搅拌站特征码序列号_芝奇的特征码与颗粒的命名规则
  10. it人才外包公司招人真的很难吗?
  11. 年薪40万的腾讯实习生作息表流出,我才知道什么叫人间真实
  12. 快狗打车,打车新平台,这个猛!
  13. 抖音SEO优化详教程
  14. 电动汽车(EV)电池粘合剂市场现状及未来发展趋势
  15. Android动画之仿美团加载数据等待时,小人奔跑进度动画对话框(附顺丰快递员奔跑效果)...
  16. 转行?小白?来看看这门和Java分庭抗礼的萌新语言!会的同学笑出了声!
  17. 计算机应用基础实训指导教程 王,计算机应用基础案例教程及实训指导-第2章___Windows操...
  18. 杰理之二代手表智能手表方案硬件框架【篇】
  19. 纯前端分页实现(vue)
  20. 南华大学计算机科学学院,湖南科技大学计算机科学与工程学院前来南华大学计算机学院进行访问与交流...

热门文章

  1. (zt)CCB、CB1、CB2、OB
  2. 股票接口实时交易数据怎么查询?
  3. JS有红,白,黑三球若干个,其中红,白球共25个,白黑共31个,红黑共28个,求三种球各多少个。
  4. ExcelVba 选区遍历
  5. 为什么边缘正在“吞噬”这个世界
  6. 计算机中丢失vcomp140.dll解决方案,可以使用这个3种方法修复
  7. python二级练习软件(90%原题)题库、三天速成。
  8. 10行python代码做出哪些酷炫的事情?
  9. omv 网站服务器,omv那些破事
  10. Shader学习笔记:BRDF简单概述