Rumah  >  Artikel  >  Java  >  Membina Sistem Pemberitahuan E-mel Segerak dalam But Spring: Panduan Langkah demi Langkah

Membina Sistem Pemberitahuan E-mel Segerak dalam But Spring: Panduan Langkah demi Langkah

PHPz
PHPzasal
2024-09-08 18:30:33585semak imbas

Meneroka Asas Penghantaran E-mel Segerak dalam Aplikasi Spring Boot

Building Synchronous Email Notification Systems in Spring Boot: A Step-by-Step Guide

Dalam dunia digital yang serba pantas hari ini, komunikasi yang tepat pada masanya adalah penting untuk sebarang aplikasi. Sama ada penetapan semula kata laluan, mesej alu-aluan atau pengesahan pesanan, pemberitahuan e-mel memainkan peranan penting dalam meningkatkan pengalaman pengguna. Sebagai pembangun, kami sering mendapati diri kami berada dalam situasi di mana menghantar pemberitahuan e-mel daripada aplikasi Spring Boot kami bukan sekadar keperluan tetapi satu keperluan.

Dalam siri blog ini, saya akan membimbing anda melalui proses pelaksanaan pemberitahuan e-mel dalam aplikasi Spring Boot. Kami akan bermula dengan asas-menggunakan pendekatan segerak untuk menghantar e-mel. Kaedah ini memastikan bahawa e-mel dihantar serta-merta semasa pelaksanaan permintaan, memberikan maklum balas segera kepada pengguna.

Walaupun pendekatan segerak mudah dilaksanakan dan boleh berkesan untuk aplikasi yang lebih kecil, adalah penting untuk memahami batasannya, terutamanya dalam persekitaran trafik tinggi yang prestasi boleh terjejas.

Dalam bahagian ini, kami akan menumpukan pada penyediaan projek, mengkonfigurasi kebergantungan yang diperlukan dan menulis kod untuk menghantar pemberitahuan e-mel asas. Pada penghujung siaran ini, anda akan mempunyai aplikasi Spring Boot yang berfungsi yang mampu menghantar e-mel secara serentak, menetapkan peringkat untuk topik yang lebih lanjutan dalam bahagian yang akan datang dalam siri ini.

Persediaan Projek

Building Synchronous Email Notification Systems in Spring Boot: A Step-by-Step Guide

Menyediakan Ketergantungan

Building Synchronous Email Notification Systems in Spring Boot: A Step-by-Step Guide

Pergantungan dalam fail pom.xml anda

Data Pemula But Spring JPA

Artifak: spring-boot-starter-data-jpa
Perihalan: Kebergantungan ini memudahkan ketekunan data menggunakan JPA (Java Persistence API). Ia menyediakan semua yang diperlukan untuk berinteraksi dengan pangkalan data, termasuk entiti, repositori dan transaksi. Dalam projek ini, ia membolehkan anda menyimpan dan mendapatkan semula data pengguna (cth., log e-mel, maklumat pengguna) daripada pangkalan data MySQL dengan mudah.

Mel Pemula But Spring

Artifak: spring-boot-starter-mail
Penerangan: Pemula ini membolehkan penghantaran e-mel daripada aplikasi Spring Boot anda. Ia termasuk komponen yang diperlukan, seperti JavaMailSender, untuk mengkonfigurasi dan menghantar pemberitahuan e-mel masa nyata untuk aktiviti pengguna seperti pendaftaran dan pengesahan pesanan.

*Web Pemula But Spring
*

Artifak: spring-boot-starter-web
Penerangan: Kebergantungan ini membantu anda membina perkhidmatan web RESTful dan menyediakan kandungan web. Ia membawa masuk perpustakaan penting seperti Spring MVC untuk mencipta API. Dalam projek ini, ia membolehkan penciptaan titik akhir untuk mencetuskan pemberitahuan e-mel melalui permintaan HTTP.

Penyambung MySQL

Artifak: mysql-connector-j
Penerangan: Ini ialah pemacu JDBC yang diperlukan untuk menyambungkan aplikasi Spring Boot anda ke pangkalan data MySQL. Ia membolehkan aplikasi berinteraksi dengan pangkalan data dan melakukan tindakan seperti membaca dan menulis data, seperti menyimpan log e-mel atau maklumat pengguna.

Lombok

Artifak: lombok
Penerangan: Lombok ialah perpustakaan berguna yang mengurangkan kod boilerplate dengan menjana kaedah biasa seperti getter, setter dan pembina secara automatik. Ia ditandakan sebagai pilihan dalam projek ini dan penggunaannya boleh memudahkan kod untuk model data seperti Pengguna atau EmailLog.

Ujian Permulaan Kasut Musim Bunga

Artifak: spring-boot-starter-test
Penerangan: Kebergantungan ini menyediakan rangka kerja ujian komprehensif untuk aplikasi Spring Boot. Ia termasuk perpustakaan seperti JUnit, Mockito dan Ujian Spring untuk ujian unit dan penyepaduan. Ia membantu memastikan sistem pemberitahuan e-mel anda berfungsi seperti yang diharapkan dengan ujian automatik.

Pemalam Spring Boot Maven

Artifak: spring-boot-maven-plugin
Penerangan: Pemalam ini membolehkan anda membina dan menjalankan aplikasi Spring Boot anda daripada arahan Maven. Ia memudahkan pembungkusan projek anda ke dalam fail JAR boleh laku, menjadikan penggunaan lebih mudah. Ia mengecualikan pergantungan Lombok daripada proses binaan jika perlu.

Mengkonfigurasi Sifat Aplikasi

Untuk menyambungkan aplikasi Spring Boot anda ke pelayan e-mel, anda boleh mengkonfigurasi fail application.properties atau application.yml dengan tetapan SMTP yang diperlukan. Di bawah ialah contoh untuk setiap format konfigurasi.

Untuk application.properties

spring.application.name=Synchronous-Email-Notifier
server.port=8080

spring.datasource.url=jdbc:mysql://localhost:3306/synchronous_email_notifier
spring.datasource.username=root
spring.datasource.password=ayush@123

spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=shri@gmail.com
spring.mail.password=
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true

Pour application.yml

spring:
  mail:
    host: smtp.example.com
    port: 587
    username: your-email@example.com
    password: your-email-password
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true

Hôte : Il s'agit de l'adresse du serveur SMTP. Remplacez smtp.example.com par l'adresse réelle de votre fournisseur SMTP (par exemple, smtp.gmail.com pour Gmail ou smtp.mail.yahoo.com pour Yahoo).

Port : le port 587 est généralement utilisé pour l'envoi d'e-mails via TLS (Transport Layer Security). Si votre fournisseur de messagerie prend en charge SSL, vous pouvez utiliser le port 465.

Nom d'utilisateur : l'adresse e-mail à partir de laquelle vous enverrez les e-mails. Assurez-vous de le remplacer par le compte de messagerie réel.

Mot de passe : le mot de passe de votre compte de messagerie. Pour des raisons de sécurité, si vous utilisez des services comme Gmail, il est recommandé d'utiliser un mot de passe d'application au lieu du mot de passe réel de votre compte. Pensez également à utiliser des variables d'environnement pour les informations sensibles telles que les mots de passe.

Authentification SMTP : cela permet l'authentification de votre serveur SMTP, ce qui est nécessaire lorsque votre fournisseur de messagerie exige un nom d'utilisateur et un mot de passe valides.

STARTTLS : Cela garantit que la connexion au serveur de messagerie est cryptée à l'aide de TLS. C’est crucial pour une communication sécurisée.

Configuration du projet

Building Synchronous Email Notification Systems in Spring Boot: A Step-by-Step Guide

User.java pour stocker le courrier de l'utilisateur et d'autres informations dans la base de données. Ici, nous envoyons l'e-mail à tous les utilisateurs présents dans la base de données.

@Entity
@AllArgsConstructor
@NoArgsConstructor
@Data
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    private String name;
    private String email;
    private String phoneNumber;
}

UserService.java

public interface UserService {
    public void saveUser(User user);
}

UserServiceImpl.java

public class UserServiceImpl implements UserService {

    @Autowired
    private UserRepository userRepository;

    @Override
    public void saveUser(User user) {
        userRepository.save(user);
    }
}

EmailController.java

@RestController
@RequestMapping("/api/email")
public class EmailController {

    @Autowired
    EmailService emailService;

    @Autowired
    UserService userService;

    @PostMapping("/saveUser")
    public String saveUser(@RequestBody User user) {
        userService.saveUser(user);
        return "User saved successfully";
    }
}

L'interface EmailService définit un contrat d'envoi d'emails dans une application Java. Il contient une méthode sendEmail, qui prend trois paramètres : l'adresse email du destinataire (to), le sujet de l'e-mail (sujet) et le contenu de l'e-mail (corps). La mise en œuvre de cette interface permet une intégration facile pour les notifications par e-mail.

package com.ayshriv.Synchronous_Email_Notifier.service;

public interface EmailService {
    void sendEmail(String to, String subject,String body);
}

Cette classe EmailServiceImpl implémente l'interface EmailService et fournit la fonctionnalité permettant d'envoyer des e-mails à l'aide de JavaMailSender de Spring. Il utilise un SimpleMailMessage pour définir le destinataire (à), le sujet (sujet) et le corps (texte). Le javaMailSender est automatiquement injecté à l’aide de l’annotation @Autowired de Spring. Si des exceptions se produisent pendant le processus d'envoi d'e-mails, elles sont détectées et enregistrées dans la console.

package com.ayshriv.Synchronous_Email_Notifier.service.impl;

import com.ayshriv.Synchronous_Email_Notifier.service.EmailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;

@Service
public class EmailServiceImpl implements EmailService {
    @Autowired
    private JavaMailSender javaMailSender;

    public void sendEmail(String to, String subject,String body)
    {
        try {
            SimpleMailMessage simpleMailMessage=new SimpleMailMessage();
            simpleMailMessage.setTo(to);
            simpleMailMessage.setSubject(subject);
            simpleMailMessage.setText(body);
            javaMailSender.send(simpleMailMessage);
        }
        catch (Exception exception)
        {
            System.out.println(exception.getMessage());
        }
    }
}

Cette classe EmailScheduler est un service Spring qui utilise une tâche planifiée pour envoyer des e-mails à tous les utilisateurs de la base de données à intervalles réguliers. La classe fonctionne comme suit :

Il utilise @Scheduled avec une expression cron ("0 0/1 * 1/1 * ?") pour exécuter la méthode fetchUsersAndSendEmail toutes les minutes.
La méthode récupère une liste de tous les utilisateurs du UserRepository et envoie un e-mail à chacun à l'aide d'EmailService.
Chaque e-mail envoyé a pour sujet « Texte de démonstration pour e-mail » et pour le corps « Démo ».

package com.ayshriv.Synchronous_Email_Notifier.schduler;

import com.ayshriv.Synchronous_Email_Notifier.entity.User;
import com.ayshriv.Synchronous_Email_Notifier.repository.UserRepository;
import com.ayshriv.Synchronous_Email_Notifier.service.EmailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class EmailScheduler {
    @Autowired
    private UserRepository userRepository;

    @Autowired
    private EmailService emailService;

    @Scheduled(cron = "0 0/1 * 1/1 * ?")
    public void fetchUsersAndSendEmail()
    {
        List<User> users = userRepository.findAll();
        for (User user:users)
        {
            emailService.sendEmail(user.getEmail(),"Demo text for email","Demo");
        }
    }
}

La classe EmailScheduler du projet Synchronous Email Notifier automatise l'envoi d'e-mails marketing aux utilisateurs à des intervalles spécifiques. À l'aide de l'annotation @Scheduled de Spring, il exécute une tâche toutes les minutes, récupérant tous les utilisateurs du UserRepository et envoyant des e-mails via EmailService. Cette configuration est idéale pour les entreprises qui souhaitent automatiser l'envoi d'e-mails marketing, de newsletters ou de notifications importantes sans intervention manuelle. Le calendrier peut être ajusté à l'aide d'expressions cron, permettant une flexibilité dans l'envoi d'e-mails quotidiennement, hebdomadairement ou à n'importe quelle fréquence personnalisée, ce qui en fait un outil puissant pour les campagnes par e-mail basées sur le temps.

Enregistrer l'utilisateur

Building Synchronous Email Notification Systems in Spring Boot: A Step-by-Step Guide

Conclusion

La classe EmailScheduler du projet Synchronous Email Notifier démontre un moyen pratique et efficace d'automatiser le processus d'envoi d'e-mails aux utilisateurs. En tirant parti de l'annotation @Scheduled de Spring Boot et de la flexibilité des expressions cron, cette classe planifie l'exécution de la tâche d'envoi d'e-mails toutes les minutes. Le UserRepository récupère tous les enregistrements utilisateur, tandis que le EmailService garantit que chaque utilisateur reçoit un e-mail avec un contenu prédéfini.

Cette approche est très utile à des fins de marketing, où les entreprises doivent envoyer des e-mails périodiques comme des newsletters, des offres promotionnelles ou des notifications à des intervalles de temps spécifiques. La configuration garantit que les e-mails sont envoyés de manière cohérente à tous les utilisateurs sans effort manuel. Cette automatisation réduit le temps et les efforts impliqués dans les processus de communication tout en permettant aux spécialistes du marketing de se concentrer sur l'élaboration de campagnes efficaces.

La possibilité de personnaliser la fréquence de ces e-mails, comme leur envoi quotidien, hebdomadaire ou mensuel, en fait un outil polyvalent pour les campagnes marketing. De plus, vous pouvez modifier le contenu de manière dynamique pour adapter le message à différents utilisateurs ou occasions. Dans l'ensemble, cette solution simplifie et rationalise le processus d'envoi d'e-mails marketing planifiés, le rendant évolutif et adaptable aux différents besoins de l'entreprise.

Vous pouvez accéder au code source complet du projet Synchronous Email Notifier sur GitHub. https://github.com/ishrivasayush/email-scheduling-application.git

Ce projet montre comment utiliser Spring Boot pour automatiser les e-mails marketing avec un planificateur. N'hésitez pas à explorer et à contribuer !

Atas ialah kandungan terperinci Membina Sistem Pemberitahuan E-mel Segerak dalam But Spring: Panduan Langkah demi Langkah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn