扫码一下
查看教程更方便
通过使用 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>
Gradle 用户可以在 build.gradle 文件中添加以下依赖项。
compile('org.springframework.boot:spring-boot-starter-mail')
主要 Spring Boot 应用程序类文件的代码如下
package com.jiyik.emailapp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author jiyik.com
*/
@SpringBootApplication
public class EmailappApplication {
public static void main(String[] args) {
SpringApplication.run(EmailappApplication.class, args);
}
}
我们可以编写一个简单的 Rest API 以发送到 Rest Controller 类文件中的电子邮件,如下所示。
package com.jiyik.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("tutorialspoint@gmail.com", "<your password>");
}
});
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("tutorialspoint@gmail.com", false));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse("tutorialspoint@gmail.com"));
msg.setSubject("Tutorials point email");
msg.setContent("Tutorials point email", "text/html");
msg.setSentDate(new Date());
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent("Tutorials point 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";
}
注意
- 请在发送电子邮件之前在 Gmail 帐户设置中打开允许不太安全的应用程序。