Maison >Java >javaDidacticiel >Comment implémenter la fonction d'envoi d'e-mails dans Springboot
L'envoi d'emails est une fonction très courante, et son implémentation en Java nécessite l'interface JavaMailSender. Dans le projet springboot, une dépendance nommée spring-boot-starter-mail doit être introduite. S'il existe des exigences concernant le format de l'e-mail, vous pouvez introduire une dépendance spring-boot-starter-thymeleaf qui peut gérer les fichiers HTML.
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
Comme les autres modules de configuration automatisés, une fois l'introduction des dépendances terminée, les valeurs d'attribut correspondantes doivent être configurées dans application.properties
, sinon la méthode en cours d'exécution signalera toujours un pointeur nul.
1. Ouvrez l'idée, cliquez sur le bouton Fichier dans la barre d'outils dans le coin supérieur gauche pour créer un nouveau projet de démarrage
2 Cliquez sur Suivant et sélectionnez les dépendances par défaut, les plus courantes incluent la connexion à la base de données, le Web, etc.
3. Cliquez sur Finish, attendez que le répertoire du projet de démarrage soit généré. Le répertoire est actuellement incomplet et vous devez ajouter vous-même les dossiers Java et Resources. Faites un clic droit sur le projet et sélectionnez
pour l'ajouter.
4. Ouvrez ensuite le fichier pom et introduisez les dépendances.
5. Ouvrez le fichier de configuration et écrivez les paramètres correspondants
Une fois le projet terminé, commencez à écrire les classes de test.
1. Créez une classe util et écrivez une classe métier qui implémente la logique d'envoi. Il n'est pas nécessaire d'écrire une classe d'outils, car je souhaite implémenter un format lors de l'envoi d'e-mails, avec des pièces jointes et des styles HTML. , et peut être asynchrone Nous savons tous que l'envoi d'e-mails prend beaucoup de temps lorsqu'il s'agit de gérer des e-mails, notamment asynchrones.
2. Ajoutez une méthode d'écriture d'appel asynchrone :
*Ajoutez @Async si vous avez besoin d'une méthode asynchrone
*Vous devez ajouter une méthode pour activer l'asynchrone sur la classe de démarrage, @EnableAsync
*Notez que cela peut être à cause du proxy aop, si la méthode appelée et le code appelant sont dans la même classe, cela équivaut simplement à cet appel de classe, et aucune classe proxy n'est utilisée, donc @Async n'a aucun effet, c'est juste une classe d'outils.
3. Code : Email avec pièce jointe
@Test public void sendAttachmentsMail() { Context context = new Context(); context.setVariable("agencyName", "11"); context.setVariable("busTypeName", "22"); context.setVariable("busAllowance", 33); String emailContent = templateEngine.process("emailTeplate", context); try { emailService.sendAttachmentsMail(new String[]{"xxx.com"}, "测试提示", emailContent); } catch (Exception e) { e.printStackTrace(); } System.out.println("send mail success!,please wait a few mintens"); }
/** * fujian * @throws Exception */ @Async public void sendAttachmentsMail(String[] to, String subject, String contnet) throws Exception { MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); helper.setFrom("xxx.com"); helper.setTo(to); helper.setSubject(subject); helper.setText(contnet,true); Path picturePath = Paths.get("E:WorkFiles estBill", "test.png"); byte[] bytes = Files.readAllBytes(picturePath); helper.addAttachment("附件-1.jpg", picturePath.toFile()); mailSender.send(mimeMessage); }
L'e-mail a été envoyé avec succès
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!