I.はじめに
最近、jsコードを使った告白についての記事を見て、感動しました。
次に、Javaコードを使用して実装できることを発見し、コードを書き始めました。非常に興味深いことがわかったので、それについては話したくありません。
実装のアイデア:
HttpClientを使用してリモートで取得します。レインボーオナラジェネレーターのウェブサイトのコンテンツ:https:// chp.shadiao.app/
javaMailはメールの送信を実現します
SpringBootはScheduledを統合して定期的にメールを送信します
次に、プロジェクトをビルドします
プロジェクト環境がメールを送信するためのMavenプロジェクトを追加し、SpringBootフレームワークに基づいており、RPCはリモートHTTPClientの呼び出し、およびスケジュールの依存関係は、以下のとおり。
org.springframework.boot
春ブート・スターター・親
2.3.2.RELEASEを
<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>
3、構成の書き込み
設定を作成する前に、ブラウザでメールにログインし、アカウントセキュリティでPOP3 / SMTPサービスを設定してPOP3 / SMTPサービスを
開始する必要があります。POP3/ SMTPサービスを開始するには確認コードを入力する必要があります。
認証コードをコピーし、
SMTPをチェックしてレターを送信し、サーバーに保存します。これをチェックします。この項目は主に送信した情報を確認するためのものなので、この項目のチェックを外します。電子メールメッセージが正常に送信された後、メールボックスに送信した情報が表示されません。
認証コードを記述して構成します。春:
メール:
ユーザー名:[email protected]#電子メールアドレス
パスワード:xxxxxxx#SMTP | POP3 | IMAPプロトコル認証コード
ホスト:smtp.qq.com#サーバーアドレス。メールボックスサービスオペレーターから提供された情報を参照してください。
プロパティ:
mail:
smtp:
auth:true#smtpプロトコル検証
ポートを有効にする:587
誰に
彼女:
メール:[email protected]
第四に、SpringBootスタートアップクラスを書く
@EnableScheduling
@SpringBootApplication
public class BiaoBaiApp { public static void main(String [] args){ SpringApplication.run(BiaoBaiApp.class、args); } 5。送信コンテンツを自動的に生成します
@Component
public class SendMessage { @Autowired private JavaMailSender mailSender; @Value( " spring .mail .username ")private S tringfrom; @値( "{spring.mail.username}")プライベート文字列from; @値("
S P R I N G 。mは、I Lを。u s e r n a m e " )p r i v a t e S t r i n g f r o m ;@ V a l u e (" {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("网站获取句子失败");
}
}
}
6、時限タスクを書く
@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);
}
}
7つ、パッケージ化して実行
条件がある場合は、出荷サーバーにjarパッケージを配置できます。条件がない場合は、ローカルのwin10システムにスケジュールされたタスクを追加して、毎日定期的にjarパッケージを実行できます。
jarパッケージはサーバーポート587でリリースする必要があります。ファイアウォールは587ポートをリリースします。
リリースに加えて、リリースするhttpポートとhttpsポートもあります。
次にjarパッケージを起動します
。nohupjava-jar jar package> Linuxバックグラウンド
でのtest.log&win10 。タスクスケジューラでタスクを作成し、
新しいトリガーを
作成し、新しい操作を作成し、プログラムまたはスクリプトに実行されたjarコマンドを入力し、[OK]をクリックする
と、作成されたタスクが表示されます。 。
8.まとめ
コードは大幅に改善されており、多くの欠点があります。
時間の関係で、最適化できる領域はまだたくさんあります。たとえば、純粋なテキストコンテンツを含むメールの送信は美しくありません。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(); }を送信するエディターには多くの欠点があります。オフィス、誰もが議論するためにコメントエリアにメッセージを残すことを歓迎します