引言

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

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

实现思路:

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

java Mail 实现发送邮件

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

搭建项目

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

org.springframework.bootgroupId> spring-boot-starter-parentartifactId> 2.3.2.RELEASEversion> parent> org.springframework.bootgroupId> spring-boot-starter-mailartifactId> dependency> org.springframeworkgroupId> spring-context-supportartifactId> dependency> org.apache.httpcomponentsgroupId> httpclientartifactId> 4.5.12version> dependency> dependencies> org.springframework.bootgroupId> spring-boot-maven-pluginartifactId> truefork> configuration> plugin> plugins> build>

编写配置

在编写配置前需要,在浏览器登录自己的邮箱在账号安全中设置开启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面试题总结+各知识点学习思维导+一份300页pdf文档的Java核心知识点总结!

文章来源: segmentfault.com,作者:前程有光,版权归原作者所有,如需转载,请联系作者。

原文链接:segmentfault.com/a/1190000038553432

java情话代码,单身狗福利!利用java实现每天给对象发情话,脱单指日可待!相关推荐

  1. java必背代码_新人福利,Java编程中必须要死记硬背的几十个代码

    原标题:新人福利,Java编程中必须要死记硬背的几十个代码 自己总结,没有先后顺序,希望对大家有用 向文件末尾添加内容 字符串有整型的相互转换 转字符串到日期 java.util.Date = jav ...

  2. 网易视频云:七夕送书 | 单身狗福利!你想看的,这里都有!

    网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,为客户提供稳定流畅.低时延.高并发的视频直播.录制.存储.转码及点播等音视频的PaaS服务.在线教育.远程医疗.娱乐秀场 ...

  3. java导出mysql数据库失败_利用Java进行MySql数据库的导入和导出

    利用Java来进行Mysql数据库的导入和导出的总体思想是通过Java来调用命令窗口执行相应的命令. MySql导出数据库的命令如下: mysqldump -uusername -ppassword  ...

  4. java判断是否第一次出现_利用java判断字符首次出现的位置,java替换最后一个特定字符...

    利用java判断字符首次出现的位置利用爪哇判断字符首次出现的位置, 目的: (学习视频分享:java视频教程 实现代码如下: 导入Java.util.收藏品: 导入Java.util.LinkedLi ...

  5. java se好用吗_利用 Java SE 7 更好地管理资源

    2011 年 5 月发布 作者:Julien Ponge 本文介绍 Java 7 针对自动资源管理问题给出的解决办法,即 Coin 项目中提出的新语言结构 try-with-resources 语句. ...

  6. java反序列化漏洞POP查找_利用 Java 反序列化漏洞在受限环境下获取反向 Shell

    原标题:利用 Java 反序列化漏洞在受限环境下获取反向 Shell 原文链接: https://medium.com/abn-amro-red-team/java-deserialization-f ...

  7. java qq 传送文件_如何利用Java实现QQ文件传输功能.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspJava 如何利用Java实现QQ文件传输功能.pdf2页 本文 ...

  8. java 静态代码块有什么用,java编程开发静态代码块的使用方法都有哪些

    代码块是程序员在学习java编程开发的时候会接触到的一个代码,而今天我们就通过案例分析来了解一下,java编程开发静态代码块的使用方法都有哪些. (一)java静态代码块静态方法区别 一般情况下,如果 ...

  9. java 发送短信例子_利用java实现的一个发送手机短信的小例子

    今天闲来无事,在微博上看到一个关于用java实现的一个发送手机短信的程序,看了看,写的不太相信,闲的没事,把他整理下来,以后可能用得着 JAVA发送手机短信,流传有几种方法:(1)使用webservi ...

最新文章

  1. 麦克风阵列降噪_黄鹂智声降噪耳机E100u,与喧嚣说再见
  2. Hibernate---进度1
  3. 【干货】常用的Linux 系统备份、恢复命令
  4. Java获取小程序带参二维码(太阳码)
  5. 【2017-05-19】WebForm复合控件、用DropDownList实现时间日期选择。
  6. easy_install django==1.4.2_百度搜索
  7. [翻译]SharePoint2007中创建Forms认证方式的站点
  8. matlab自带的信号,实验一 连续时间信号在MATLAB中的表示..ppt
  9. Monkey命令参数详解
  10. linux中查看rpm包位置,linux中,查看某个命令是来自哪个RPM包或者是通过哪个RPM包安装的...
  11. GE、西门子、PTC、SAP、阿里、腾讯、海尔..工业互联网的『未来战争』
  12. Krpano vtourskin.xml 默认皮肤详解
  13. JAVA POI 对excel加密后 无法打开的解决办法
  14. bzoj 5394: [Ynoi2016]炸脖龙 扩展欧拉定理+树状数组
  15. 北京跑步入夏--妞妞跑步长大
  16. qt 模拟鼠标滑轮_【游戏流体力学基础及Unity代码(四)】用欧拉方程模拟无粘性染料之公式推导...
  17. VirtualBox增强功能包
  18. The server time zone value .. is unrecognized or represents more than one time zone
  19. 2021年安全生产模拟考试(建筑特种作业操作证-建筑焊工模拟考试题库)安考星
  20. 立夏游雪上,赏奇花,正当时:天台九遮山

热门文章

  1. 调用 McAfee/KasperSky 扫描杀毒
  2. java判断一个整数是不是完全平方数
  3. 烟囱式架构与共享式架构
  4. JavaScript求BMI指数
  5. 逆战班第一篇:CSS动画
  6. 腾讯入股之际 国美双线闪电袭京东
  7. 在vue3中使用vue-lgrid-layout
  8. 在屏幕上输出以下图案: * *** ***** ******* ********* *********** ************* *********** *********
  9. php中的递归思想,PHP 递归和递推思想
  10. Android感应检测Sensor(简单介绍),Android架构师之路