I. Introdução
Recentemente, vi um artigo sobre confissão usando código js e fiquei profundamente comovido.
Então descobri que também poderia usar o código java para implementá-lo e comecei a escrever o código. Achei muito interessante, então não quero falar sobre isso.
Ideia de implementação:
Use HttpClient para obter remotamente o conteúdo do site do gerador de peido arco-íris: https: // chp.shadiao.app/
java Mail realiza o envio de e-mail
SpringBoot integra Scheduled para enviar e-mails regularmente
Em segundo lugar, construa o projeto
O ambiente do projeto é baseado na estrutura SpringBoot, adicionando um projeto Maven para envio de e-mail, RPC chamada remota de httpclient e Scheduled. As dependências são as seguintes:
org.springframework.boot
spring-boot-starter-parent
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>
Três, escrever configuração
Antes de escrever a configuração, você precisa fazer login no seu e-mail no navegador e definir o serviço POP3 / SMTP na segurança da conta para
iniciar o serviço POP3 / SMTP. Você precisa inserir o código de verificação para iniciar o serviço POP3 / SMTP.
Copie o código de autorização e
marque SMTP para enviar a carta e salve-a no servidor, marque este O item é principalmente para ver quais informações você enviou, então desmarque este item. Depois que a mensagem de e-mail é enviada com sucesso, não consigo ver as informações que enviei na minha caixa de correio.
Escreva e configure o código de autorização spring:
mail:
username: [email protected] # Senha do meu endereço de e-mail
: xxxxxxx # SMTP | POP3 | IMAP
host do código de autorização do protocolo : smtp.qq.com # Endereço do servidor. Consulte as informações fornecidas pela operadora do serviço de caixa de correio.
propriedades:
mail:
smtp:
auth: true # Ativar
porta de verificação do protocolo smtp : 587
A quem
ela:
mail: [email protected]
Quarto, escreva a classe de inicialização SpringBoot
@EnableScheduling
@SpringBootApplication
public class BiaoBaiApp { public static void main (String [] args) { SpringApplication.run (BiaoBaiApp.class, args); } 5. Gerar automaticamente o conteúdo de envio
@Component
public class SendMessage { @Autowired private JavaMailSender mailSender; @Value (" spring. Mail. Username") private S tringfrom; @ V alue ("{spring.mail.username}") String privada de; @Valor("
s p r i n g . m a 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("网站获取句子失败");
}
}
}
Seis, escreva tarefas cronometradas
@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);
}
}
Seven, empacote e execute
Se você tiver condições, pode colocar o pacote jar no servidor de remessa. Se não houver condições, você pode adicionar uma tarefa agendada no sistema win10 local e executar o pacote jar regularmente todos os dias.
O pacote jar precisa ser lançado na porta do servidor: 587, o firewall libera a porta 587.
Além da versão, também há portas http e https a serem lançadas.
Em seguida, inicie o pacote jar
nohup java -jar jar package> test.log &
win10 no fundo do Linux. Crie uma tarefa no agendador de tarefas, crie um
novo gatilho,
crie uma nova operação, insira o comando jar executado no programa ou script, clique em OK
e então você pode ver a tarefa criada .
8. Resumo
O código foi bastante aprimorado e existem muitas deficiências.
Por questões de tempo, ainda existem muitas áreas que podem ser otimizadas. Por exemplo, enviar e-mails com conteúdo de texto puro não é bonito. Você pode enviar e-mails em modo html para tornar o conteúdo dos e-mails enviados mais bonito.
public void sendHtmlMessage (String subject, String message) { try { MimeMessage mimeMessage = mailSender.createMimeMessage (); MimeMessageHelper helper = new MimeMessageHelper (mimeMessage); helper.setFrom (from); helper.setTo (sheMail); subject.setTo ( sheMail); ); helper.setText (message, true); // true Use html para enviar mailSender.send (helper.getMimeMessage ()); } catch (MessagingException e) { e.printStackTrace (); } Existem muitas deficiências no editor Escritório, todos são bem-vindos para deixar uma mensagem na área de comentários para discutir