通过使用Spring Boot RESTful Web服务,可以发送包含Gmail传输层安全性的电子邮件。在本章中,详细了解如何使用此功能。
首先,需要在构建配置文件中添加Spring Boot Starter Mail依赖项。
Maven用户可以将以下依赖项添加到pom.xml 文件中。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
主 Spring Boot 应用程序类文件的代码如下 -
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class EmailappApplication {
public static void main(String[] args) {
SpringApplication.run(EmailappApplication.class, args);
}
}
可以编写一个简单的Rest API,以便在Rest Controller类文件中发送到电子邮件,如图所示。
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class EmailController {
@RequestMapping(value = "/sendemail")
public String sendEmail() {
return "Email sent successfully";
}
}
编写一个方法来发送带有附件的电子邮件。定义mail.smtp属性并使用PasswordAuthentication。
private void sendmail() throws AddressException, MessagingException, IOException {
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
Session session = Session.getInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("test@gmail.com", "<your password>");
}
});
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("test@gmail.com", false));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse("test@gmail.com"));
msg.setSubject("Spring Boot test email");
msg.setContent("Spring Boot test email", "text/html");
msg.setSentDate(new Date());
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent("Spring Boot test email", "text/html");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
MimeBodyPart attachPart = new MimeBodyPart();
attachPart.attachFile("/var/tmp/image19.png");
multipart.addBodyPart(attachPart);
msg.setContent(multipart);
Transport.send(msg);
}
现在,从Rest API调用上面的sendmail()方法,如图所示 -
@RequestMapping(value = "/sendemail")
public String sendEmail() throws AddressException, MessagingException, IOException {
sendmail();
return "Email sent successfully";
}
现在,可以创建一个可执行的JAR文件,并使用下面显示的Maven或Gradle命令运行Spring Boot应用程序 - 对于Maven,可以使用如下所示的命令 -
mvn clean install
在“BUILD SUCCESS”之后,可以在target目录下找到JAR文件。
现在,使用下面给出的命令运行JAR文件 -
java –jar <JARFILE>
看到应用程序已在Tomcat端口8080上启动。
现在,从Web浏览器中打开以下URL => http://localhost:8080/sendemail ,
发送成功后,开登录邮件账户将收到一封电子邮件。