Rumah Java javaTutorial 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

Sep 08, 2024 pm 06:30 PM

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
Salin selepas log masuk

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

Salin selepas log masuk

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;
}
Salin selepas log masuk

UserService.java

public interface UserService {
    public void saveUser(User user);
}
Salin selepas log masuk

UserServiceImpl.java

public class UserServiceImpl implements UserService {

    @Autowired
    private UserRepository userRepository;

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

Salin selepas log masuk

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";
    }
}

Salin selepas log masuk

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);
}

Salin selepas log masuk

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());
        }
    }
}

Salin selepas log masuk

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");
        }
    }
}

Salin selepas log masuk

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 Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1670
14
Tutorial PHP
1276
29
Tutorial C#
1256
24
Adakah perisian keselamatan syarikat menyebabkan aplikasi gagal dijalankan? Bagaimana cara menyelesaikan masalah dan menyelesaikannya? Adakah perisian keselamatan syarikat menyebabkan aplikasi gagal dijalankan? Bagaimana cara menyelesaikan masalah dan menyelesaikannya? Apr 19, 2025 pm 04:51 PM

Penyelesaian masalah dan penyelesaian kepada perisian keselamatan syarikat yang menyebabkan beberapa aplikasi tidak berfungsi dengan baik. Banyak syarikat akan menggunakan perisian keselamatan untuk memastikan keselamatan rangkaian dalaman. …

Bagaimanakah saya menukar nama kepada nombor untuk melaksanakan penyortiran dan mengekalkan konsistensi dalam kumpulan? Bagaimanakah saya menukar nama kepada nombor untuk melaksanakan penyortiran dan mengekalkan konsistensi dalam kumpulan? Apr 19, 2025 pm 11:30 PM

Penyelesaian untuk menukar nama kepada nombor untuk melaksanakan penyortiran dalam banyak senario aplikasi, pengguna mungkin perlu menyusun kumpulan, terutama dalam satu ...

Bagaimana untuk memudahkan isu pemetaan medan dalam dok sistem menggunakan mapstruct? Bagaimana untuk memudahkan isu pemetaan medan dalam dok sistem menggunakan mapstruct? Apr 19, 2025 pm 06:21 PM

Pemprosesan pemetaan medan dalam dok sistem sering menemui masalah yang sukar ketika melaksanakan sistem dok: bagaimana untuk memetakan medan antara muka sistem dengan berkesan ...

Bagaimanakah Idea IntelliJ mengenal pasti nombor port projek boot musim bunga tanpa mengeluarkan log? Bagaimanakah Idea IntelliJ mengenal pasti nombor port projek boot musim bunga tanpa mengeluarkan log? Apr 19, 2025 pm 11:45 PM

Mula musim bunga menggunakan versi IntelliJideaultimate ...

Bagaimana dengan elegan mendapatkan nama pemboleh ubah kelas entiti untuk membina keadaan pertanyaan pangkalan data? Bagaimana dengan elegan mendapatkan nama pemboleh ubah kelas entiti untuk membina keadaan pertanyaan pangkalan data? Apr 19, 2025 pm 11:42 PM

Apabila menggunakan Mybatis-Plus atau Rangka Kerja ORM yang lain untuk operasi pangkalan data, sering diperlukan untuk membina syarat pertanyaan berdasarkan nama atribut kelas entiti. Sekiranya anda secara manual setiap kali ...

Bagaimana cara menukar objek Java dengan selamat ke array? Bagaimana cara menukar objek Java dengan selamat ke array? Apr 19, 2025 pm 11:33 PM

Penukaran objek dan tatasusunan Java: Perbincangan mendalam tentang risiko dan kaedah penukaran jenis cast yang betul Banyak pemula Java akan menemui penukaran objek ke dalam array ...

Platform e-dagang SKU dan Reka Bentuk Pangkalan Data SPU: Bagaimana untuk mengambil kira kedua-dua atribut yang ditakrifkan oleh pengguna dan produk yang tidak berkesudahan? Platform e-dagang SKU dan Reka Bentuk Pangkalan Data SPU: Bagaimana untuk mengambil kira kedua-dua atribut yang ditakrifkan oleh pengguna dan produk yang tidak berkesudahan? Apr 19, 2025 pm 11:27 PM

Penjelasan terperinci mengenai reka bentuk jadual SKU dan SPU di platform e-dagang Artikel ini akan membincangkan isu reka bentuk pangkalan data SKU dan SPU dalam platform e-dagang, terutamanya bagaimana menangani jualan yang ditentukan pengguna ...

Bagaimana menggunakan penyelesaian cache Redis untuk merealisasikan keperluan senarai kedudukan produk dengan cekap? Bagaimana menggunakan penyelesaian cache Redis untuk merealisasikan keperluan senarai kedudukan produk dengan cekap? Apr 19, 2025 pm 11:36 PM

Bagaimanakah penyelesaian caching Redis menyedari keperluan senarai kedudukan produk? Semasa proses pembangunan, kita sering perlu menangani keperluan kedudukan, seperti memaparkan ...

See all articles