java语言情话_程序员的浪漫:用 java 实现每天给对象法发情话
一、引言
最近看到一篇用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 实现每天给对象法发情话相关推荐
- python 程序员专属情话_程序员最浪漫情话
程序员往往城还没攻下来,我们的头发就先掉下来! 程序员最浪漫情话: 段子一 "等我敲完这行代码,就和你离婚!" 他头也不抬的说 听完之后,她心里暖暖的 她想,这可能是最长情的承诺. ...
- Java说情话_程序员的浪漫:用 java 实现每天给对象法发情话
一.引言 最近看到一篇用js代码实现表白的文章,深有感触. 然后发现自己也可以用java代码实现,然后就开始写代码了,发现还挺有意思的,话不多说开搞 实现思路: 使用HttpClient远程获取彩虹屁 ...
- 用Java写句情话_程序员的浪漫:用 java 实现每天给对象法发情话
一.引言 最近看到一篇用js代码实现表白的文章,深有感触. 然后发现自己也可以用java代码实现,然后就开始写代码了,发现还挺有意思的,话不多说开搞 实现思路: 使用HttpClient远程获取彩虹屁 ...
- java实现心形图案|桃心_程序员的浪漫--java打印心形图案
原标题:程序员的浪漫--java打印心形图案 谁说程序员不能浪漫 单纯的心 双心 加些点缀 代码所用方程: 心:((0.05*x)^2 + (0.1*y)^2-1)^3-(0.05*x)^2 * (0 ...
- object转成实体对象_程序员的浪漫,new一个对象
程序员都喜欢 面向对象编程,但如果你没有对象怎么办?当然是 new 一个对象出来. 面向对象编程 是一种程序设计思想,而不是真正的面向你的对象去编程.如果你真的这么做了,恭喜你获得:你爱我还是爱电脑? ...
- java 字符串转骆驼命名_程序员必知的Java基础:5条命名规范和8种数据类型归纳...
原标题:程序员必知的Java基础:5条命名规范和8种数据类型归纳 一.Java命名规范 任何一种语言都有一套针对于语言自身的命名的规范,java也不例外.接下来,我就列举一下java对命名的规范. 下 ...
- java中的model_Java程序员必看之springmvc中的Model对象在重定向中的数据
原标题:Java程序员必看之springmvc中的Model对象在重定向中的数据 在springmvc框架中,一个handler方法中的参数可以内置接收Model类型的对象,主要用于存储数据之用,主要 ...
- 学了java有必要学c语言吗_程序员有必要学习C语言吗?这几点原因很现实
原标题:程序员有必要学习C语言吗?这几点原因很现实 C语言是编程语言中的一种,有不少程序员会有这样的疑问?难道做程序员就必须要学习C语言吗?甚至有人觉得,我平时的工作中也用不到C语言我为什么要学习呢? ...
- java写一个简单的浪漫代码_程序员的浪漫弹窗表白,圣诞节给Ta惊喜吧(附源码,简单易学哦)...
不要以为程序员都是木讷的,浪漫起来也会让很多妹子心动的.而程序员的表白方式也很不一般,通过一堆代码,无限释放浪漫.今天教给大家通过改写脚本语言,利用弹窗可充分自由发挥,用来表白或者恶搞都是不错的选择. ...
最新文章
- VMWARE错误-“VirtualInfrastructure.Utils.ClientsXml“的类型初始值设定项引发异常
- python的_thread模块来实现多线程(python核心编程例子)
- 面试题系列(7):线程与进程的区别是什么,简单说一下。
- slice与substring与substr
- 大数据之-Hadoop3.x_MapReduce_Combiner概述---大数据之hadoop3.x工作笔记0118
- linux之git入门命令
- ueditor 编辑器增加css样式_ueditor编辑器实现语法高亮
- Python 监控linux之dstat
- 【破解APP抓包限制】Xposed+JustTrustMe关闭SSL证书验证
- 毕业论文学术报告答辩开题报告PPT模板
- 计算机做无线AP共享文件,Windows 7妙用 笔记本变无线AP轻松共享
- Oracle JDK 与 OpenJDK
- 爬取 百度logo(图片)
- 栈溢出学习(四)之Hijack GOT
- Mysql-mmm 架构部署
- 求最大公约数代码 Java_java怎么求最大公约数?
- JavaScript 之 学习网站推荐 强推【javascript.info】
- SAP系统中的区域菜单(Area Menu)及SPRO的使用技巧
- ERP与MES的区别与联系
- 论文阅读-Twitter Bot Detection Using Bidirectional LongShort-term Memory Neural Networks-TPS-ISA会议
热门文章
- 本周四直播丨Oracle中为什么没有double write?那支持原子写吗?
- 嘉年华回顾丨 杨长老带你解密 Oracle 19c 和 20c 的新特性
- JAVA只要掌握内部类,多继承和单继承都不是问题
- 解读业界5种主流的深度网络模型
- 4种Golang并发操作中常见的死锁情形
- 华为前端工程师分享:查明网站访问故障原因,教你4招快速应对
- 技术实践丨如何解决异步接口请求快慢不均导致的数据错误问题?
- 致谢!华为全联接2020精彩回顾
- 【华为云技术分享】【昇腾】ModelArts与Atlas 200 DK云端协同开发——行人检测Demo(提供完整Demo)
- 弹性负载均衡:负载无限,均衡有道【华为云分享】