• 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

    结果:


  • 相关阅读:
    hive表中导入数据 多种方法详细说明
    5G与无人驾驶:引领未来交通的新潮流
    GRPC远程调用
    前端框架里url中#的真正作用
    2022保研夏令营/预推免记录:浙大计院直博/西湖电子直博/南大软院/厦大信院
    【云原生 | 42】Docker快速部署高可靠性编程语言Erlang
    解密Kubernetes:探索开源容器编排工具的内核
    支持亿级标签接入,ClickHouse在广域物联网云平台架构的探索与实践
    设计模式之观察者模式
    POM文件详解
  • 原文地址:https://blog.csdn.net/m0_63251896/article/details/134023651