java大神之路源码(用Java实现每天给对象发情话)

谁说程序员不懂浪漫的?每日自动给女朋友发情话,源码奉上(文末获取)!

一、引言

前几天听说朋友跟我吹嘘自己可以用js代码实现表白,我一想,你JS可以,难道我Java不行吗?说干就干,首先,我捋清实现的思路:

  • 情话获取方式:利用HttpClient,将网站:彩虹屁生成器(https://chp.shadiao.app/)中的内容存下来
  • 发送邮件功能:java Mail
  • 定时发送功能:利用SpringBoot对Scheduled进行整合
二、搭建项目

首先,以SpringBoot框架为基础,对项目环境进行搭建,同时,将RPC远程调用httpclient、Scheduled 的一个Maven项目、邮件发送mail加入进来:

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.2.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </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> </dependencies> <!--打包插件--> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> </plugins> </build>

三、编写配置

准备工作:将自己的邮箱账号在在浏览器登录,并打开POP3/SMTP服务(安全设置中)

java大神之路源码(用Java实现每天给对象发情话)(1)

这一步骤需要【验证码】

java大神之路源码(用Java实现每天给对象发情话)(2)

复制【授权码】

java大神之路源码(用Java实现每天给对象发情话)(3)

勾选第三项,【SMTP发信后保存到服务器】

java大神之路源码(用Java实现每天给对象发情话)(4)

根据授权码编写配置

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@SpringBootApplicationpublic class BiaoBaiApp { public static void main(String[] args) { SpringApplication.run(BiaoBaiApp.class,args);}

五、自动生成发送内容

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

六、编写定时任务

@Componentpublic class MyScheduled { @Autowired private SendMessage sendMessage; /*定时执行任务方法 每天5点20执行该任务*/ @Scheduled(cron ="0 20 17 * * *") public void dsrw(){ String message = sendMessage.getOneS(); sendMessage.sendMessage("来自清茶淡粥的消息!❤",message); }}

七、打包运行

有两种打包运行方式:其一,将jar包,放在云服务器上,此方式防火墙放行587端口,同时,放行 https 端口 、http端口;其二,将定时任务添加在本地win10系统上,但是此方式需要每天定时执行jar包。

java大神之路源码(用Java实现每天给对象发情话)(5)

后台启动jar包(linux)

nohup java -jar jar包 >test.log &

方式二:win10 定时运jar 包

实现:创建任务(在任务计划程序中)

java大神之路源码(用Java实现每天给对象发情话)(6)

新建触发器

java大神之路源码(用Java实现每天给对象发情话)(7)

输入jar命令

java大神之路源码(用Java实现每天给对象发情话)(8)

创建ok

java大神之路源码(用Java实现每天给对象发情话)(9)

八、总结

到这一步,就可以实现每日自动给女朋友发送情话啦!但是由于时间仓促,代码还有很大的提升,也有很多不足之处。

例如:可以采用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实现每天给对象发情话)(10)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页