• springboot实现邮箱发送(激活码)功能


    第一步:现在邮箱里面开启smtp服务

    这里用163邮箱举例,配置一下授权密码,这个要提前记住

    第二步:引入依赖

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    4. <modelVersion>4.0.0</modelVersion>
    5. <groupId>com.example</groupId>
    6. <artifactId>malisend</artifactId>
    7. <version>0.0.1-SNAPSHOT</version>
    8. <name>malisend</name>
    9. <description>malisend</description>
    10. <properties>
    11. <java.version>1.8</java.version>
    12. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    13. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    14. <spring-boot.version>2.6.13</spring-boot.version>
    15. </properties>
    16. <dependencies>
    17. <dependency>
    18. <groupId>org.springframework.boot</groupId>
    19. <artifactId>spring-boot-starter-web</artifactId>
    20. </dependency>
    21. <dependency>
    22. <groupId>org.projectlombok</groupId>
    23. <artifactId>lombok</artifactId>
    24. </dependency>
    25. <dependency>
    26. <groupId>org.springframework.boot</groupId>
    27. <artifactId>spring-boot-starter-mail</artifactId>
    28. </dependency>
    29. <dependency>
    30. <groupId>org.springframework.boot</groupId>
    31. <artifactId>spring-boot-starter-test</artifactId>
    32. <scope>test</scope>
    33. </dependency>
    34. </dependencies>
    35. <dependencyManagement>
    36. <dependencies>
    37. <dependency>
    38. <groupId>org.springframework.boot</groupId>
    39. <artifactId>spring-boot-dependencies</artifactId>
    40. <version>${spring-boot.version}</version>
    41. <type>pom</type>
    42. <scope>import</scope>
    43. </dependency>
    44. </dependencies>
    45. </dependencyManagement>
    46. <build>
    47. <plugins>
    48. <plugin>
    49. <groupId>org.apache.maven.plugins</groupId>
    50. <artifactId>maven-compiler-plugin</artifactId>
    51. <version>3.8.1</version>
    52. <configuration>
    53. <source>1.8</source>
    54. <target>1.8</target>
    55. <encoding>UTF-8</encoding>
    56. </configuration>
    57. </plugin>
    58. <plugin>
    59. <groupId>org.springframework.boot</groupId>
    60. <artifactId>spring-boot-maven-plugin</artifactId>
    61. <version>${spring-boot.version}</version>
    62. <configuration>
    63. <mainClass>com.example.malisend.MalisendApplication</mainClass>
    64. <skip>true</skip>
    65. </configuration>
    66. <executions>
    67. <execution>
    68. <id>repackage</id>
    69. <goals>
    70. <goal>repackage</goal>
    71. </goals>
    72. </execution>
    73. </executions>
    74. </plugin>
    75. </plugins>
    76. </build>
    77. </project>

    第三步:写配置文件

    1. spring:
    2. mail:
    3. host: smtp.163.com # 网站发送邮件邮箱服务 host
    4. port: 465
    5. username: # 开启那个服务的邮箱
    6. password: # 开启服务的那个认证码
    7. properties:
    8. mail:
    9. smtp:
    10. auth: true
    11. socketFactory:
    12. class: javax.net.ssl.SSLSocketFactory
    13. starttls:
    14. enable: true

    第四步:写代码

    Order实体类:

    1. package com.example.malisend.demos;
    2. import lombok.AllArgsConstructor;
    3. import lombok.Data;
    4. import lombok.NoArgsConstructor;
    5. @Data
    6. @AllArgsConstructor
    7. @NoArgsConstructor
    8. public class Order {
    9. private int oid;
    10. private String oname;
    11. private float price;
    12. }
    OrderManager接口
    1. package com.example.malisend.demos;
    2. public interface OrderManager {
    3. void placeOrder(Order order);
    4. }
    SimpleOrderManager类
    1. package com.example.malisend.demos;
    2. import javax.mail.Message;
    3. import javax.mail.MessagingException;
    4. import javax.mail.internet.InternetAddress;
    5. import javax.mail.internet.MimeMessage;
    6. import javax.mail.internet.MimeMessage;
    7. import org.springframework.mail.MailException;
    8. import org.springframework.mail.javamail.JavaMailSender;
    9. import org.springframework.mail.javamail.JavaMailSenderImpl;
    10. import org.springframework.mail.javamail.MimeMessagePreparator;
    11. import org.springframework.stereotype.Service;
    12. @Service
    13. public class SimpleOrderManager implements OrderManager {
    14. private JavaMailSender mailSender;
    15. public void setMailSender(JavaMailSender mailSender) {
    16. this.mailSender = mailSender;
    17. }
    18. public void placeOrder(final Order order) {
    19. // Do the business calculations...
    20. // Call the collaborators to persist the order...
    21. MimeMessagePreparator preparator = new MimeMessagePreparator() {
    22. public void prepare(MimeMessage mimeMessage) throws Exception {
    23. mimeMessage.setRecipient(Message.RecipientType.TO,
    24. new InternetAddress("要发送给那个人的邮箱"));
    25. mimeMessage.setFrom(new InternetAddress("开启服务的那个邮箱"));
    26. mimeMessage.setText("Dear " + order.getOname() + " " +
    27. order.getPrice() + ", thanks for your order. " +
    28. "Your order number is " + ".");
    29. }
    30. };
    31. try {
    32. this.mailSender.send(preparator);
    33. }
    34. catch (MailException ex) {
    35. // simply log it and go on...
    36. System.err.println(ex.getMessage());
    37. }
    38. }
    39. }
    OrderController类
    1. package com.example.malisend.demos;
    2. import org.springframework.beans.factory.annotation.Autowired;
    3. import org.springframework.mail.javamail.JavaMailSenderImpl;
    4. import org.springframework.web.bind.annotation.GetMapping;
    5. import org.springframework.web.bind.annotation.RestController;
    6. @RestController
    7. public class OrderController {
    8. @Autowired
    9. SimpleOrderManager orderManager;
    10. @Autowired
    11. JavaMailSenderImpl mailSender;
    12. Order order=new Order(1,"cyl",2.8f);
    13. @GetMapping("/sendMail")
    14. public void sendMail(){
    15. orderManager.setMailSender(mailSender);
    16. orderManager.placeOrder(order);
    17. }
    18. }

    访问:http://localhost:8080/sendMail

    结果:


  • 相关阅读:
    邻接表的链表实现——链式前向星
    yolov5原理
    使用printJS插件打印
    elasticsearch高级篇:核心概念和实现原理
    Spring Boot 3 集成 Knife4j
    普利姆算法(Java)
    【论文笔记】基于强化学习的连续型机械臂自适应跟踪控制
    SD 交货单过账后自动产生服务确认单据
    git stash 是一个在Git中用于保存当前工作目录和暂存区的临时状态的命令
    使用frp进行内网穿透
  • 原文地址:https://blog.csdn.net/m0_63251896/article/details/134023651