Usando Java para darse cuenta de las palabras de celo diario al objeto

I. Introducción

Recientemente vi un artículo sobre la confesión usando código js y me conmovió profundamente.
Luego descubrí que también podía usar el código Java para implementarlo, y luego comencé a escribir el código. Descubrí que era bastante interesante, así que no quiero hablar de eso.
Idea de implementación:
Use HttpClient para obtener de forma remota el contenido del sitio web del generador de pedos de arco iris: https: // chp.shadiao.app/

java Mail realiza el envío de correo

SpringBoot se integra Programado para enviar correos electrónicos con regularidad

Segundo, construye el proyecto

El entorno del proyecto se basa en el marco SpringBoot, agregando un proyecto Maven para enviar correo, llamadas remotas RPC httpclient y Scheduled. Las dependencias son las siguientes:

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>

Tres, escribir configuración

Antes de escribir la configuración, debe iniciar sesión en su correo electrónico en el navegador y configurar el servicio POP3 / SMTP en la seguridad de la cuenta para Inserte la descripción de la imagen aquí
iniciar el servicio POP3 / SMTP. Debe ingresar el código de verificación para iniciar el servicio POP3 / SMTP. Inserte la descripción de la imagen aquí
Copie el código de autorización y Inserte la descripción de la imagen aquí
marque SMTP para enviar la carta y guárdela en el servidor, marque esto El elemento es principalmente para ver qué información ha enviado, así que desmarque este elemento. Después de que el mensaje de correo electrónico se envió correctamente, no puedo ver la información que he enviado en mi buzón. Inserte la descripción de la imagen aquí
Escriba y configure el código de autorización spring:
mail:
username: [email protected] # Mi dirección de correo electrónico
contraseña: xxxxxxx # SMTP | POP3 | IMAP
host del código de autorización del protocolo : smtp.qq.com # Dirección del servidor. Consulte la información proporcionada por el operador del servicio de buzón.
properties:
mail:
smtp:
auth: true # Habilitar
puerto de verificación del protocolo smtp : 587

A quien

ella:
correo: [email protected]

Cuarto, escriba la clase de inicio SpringBoot

@EnableScheduling
@SpringBootApplication
public class BiaoBaiApp { public static void main (String [] args) { SpringApplication.run (BiaoBaiApp.class, args); } 5. Genere automáticamente el envío de contenido



@Component
public class SendMessage { @Autowired private JavaMailSender mailSender; @Value (" spring. Mail. Username") private S tringfrom; @ V alor ("{spring.mail.username}") cadena privada de; @Valor("


s p r i n g . m a i l . u s e r n un m e " ) p r i v un 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 (asunto de la cadena, mensaje de la cadena) {

    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, escribe tareas 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);
}

}
Siete, empaque y ejecute

Si tiene condiciones, puede colocar el paquete jar en el servidor de envío. Si no hay condiciones, puede agregar una tarea programada en el sistema local win10 y ejecutar el paquete jar regularmente todos los días.
El paquete jar debe liberarse en el puerto del servidor: 587, el firewall libera el puerto 587.
Además de la liberación, también hay puertos http y https que deben liberarse. Inserte la descripción de la imagen aquí
Luego, inicie el paquete jar
nohup java -jar paquete jar> test.log &
win10 en el fondo de linux. Cree una tarea en el programador de tareas, cree un Inserte la descripción de la imagen aquí
nuevo disparador, Inserte la descripción de la imagen aquí
cree una nueva operación, ingrese el comando jar ejecutado en el programa o script, haga clic en Aceptar, Inserte la descripción de la imagen aquí
y luego podrá ver la tarea creada . Inserte la descripción de la imagen aquí
8. Resumen

El código se ha mejorado mucho y hay muchas deficiencias.
Por razones de tiempo, todavía hay muchas áreas que se pueden optimizar. Por ejemplo, enviar correos con contenido de texto puro no es hermoso. Puede enviar correos en modo html para hacer que el contenido de los correos enviados sea más hermoso.
public void sendHtmlMessage (String asunto, String mensaje) { try { MimeMessage mimeMessage = mailSender.createMimeMessage (); MimeMessageHelper helper = new MimeMessageHelper (mimeMessage); helper.setFrom (desde); helper.setTo (sheMailSub); helper.setTo ( sheMailSub); ); helper.setText (message, true); // true Usa html para enviar mailSender.send (helper.getMimeMessage ()); } catch (MessagingException e) { e.printStackTrace (); } Hay muchas deficiencias en el editor Oficina, todos pueden dejar un mensaje en el área de comentarios para discutir











Supongo que te gusta

Origin blog.csdn.net/dcj19980805/article/details/114880657
Recomendado
Clasificación