第一步:现在邮箱里面开启smtp服务
这里用163邮箱举例,配置一下授权密码,这个要提前记住
第二步:引入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>malisend</artifactId><version>0.0.1-SNAPSHOT</version><name>malisend</name><description>malisend</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.6.13</spring-boot.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.example.malisend.MalisendApplication</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>
第三步:写配置文件
spring:mail:host: smtp.163.com # 网站发送邮件邮箱服务 hostport: 465username: # 开启那个服务的邮箱password: # 开启服务的那个认证码properties:mail:smtp:auth: truesocketFactory:class: javax.net.ssl.SSLSocketFactorystarttls:enable: true
第四步:写代码
Order实体类:
package com.example.malisend.demos;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
public class Order {private int oid;private String oname;private float price;
}
OrderManager接口
package com.example.malisend.demos;public interface OrderManager {void placeOrder(Order order);}
SimpleOrderManager类
package com.example.malisend.demos;import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMessage;
import org.springframework.mail.MailException;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessagePreparator;
import org.springframework.stereotype.Service;@Service
public class SimpleOrderManager implements OrderManager {private JavaMailSender mailSender;public void setMailSender(JavaMailSender mailSender) {this.mailSender = mailSender;}public void placeOrder(final Order order) {// Do the business calculations...// Call the collaborators to persist the order...MimeMessagePreparator preparator = new MimeMessagePreparator() {public void prepare(MimeMessage mimeMessage) throws Exception {mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress("要发送给那个人的邮箱"));mimeMessage.setFrom(new InternetAddress("开启服务的那个邮箱"));mimeMessage.setText("Dear " + order.getOname() + " " +order.getPrice() + ", thanks for your order. " +"Your order number is " + ".");}};try {this.mailSender.send(preparator);}catch (MailException ex) {// simply log it and go on...System.err.println(ex.getMessage());}}}
OrderController类
package com.example.malisend.demos;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class OrderController {@AutowiredSimpleOrderManager orderManager;@AutowiredJavaMailSenderImpl mailSender;Order order=new Order(1,"cyl",2.8f);@GetMapping("/sendMail")public void sendMail(){orderManager.setMailSender(mailSender);orderManager.placeOrder(order);}
}
访问:http://localhost:8080/sendMail
结果: