Spring Boot郵件發送教學:步步為營,輕鬆實現圖片附件郵件!
2024.03.25
透過Spring Boot建立一個強大的郵件發送應用程序,重點是實現發送包含圖片附件的郵件。我將逐步介紹添加必要的依賴、建立郵件服務類別和控制器的步驟,並提供了具體的範例原始程式碼。跟隨這個簡單而清晰的教程,您將能夠輕鬆地整合郵件發送功能到您的Spring Boot應用中。
步驟1: 新增依賴
確保在pom.xml檔案中加入以下依賴,以引入Spring Boot的郵件支援:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
- 1.
- 2.
- 3.
- 4.
步驟2: 建立郵件服務類
建立一個服務類,該類包含了發送帶有圖片附件的郵件的邏輯。在這個範例中,我們使用JavaMailSender和MimeMessageHelper來建立郵件:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.core.io.Resource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@Service
public class EmailService {
@Autowired
private JavaMailSender javaMailSender;
public void sendEmailWithAttachment(String to, String subject, String text, String imagePath) throws MessagingException, IOException {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(text, true);
// 添加图片附件
helper.addInline("imageAttachment", getImageResource(imagePath));
javaMailSender.send(message);
}
private Resource getImageResource(String imagePath) throws IOException {
Path path = Paths.get(imagePath);
byte[] imageBytes = Files.readAllBytes(path);
return new ByteArrayResource(imageBytes);
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
步驟3: 建立郵件發送的Controller
建立一個Controller類,用於觸發發送帶有圖片附件的郵件的操作:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.mail.MessagingException;
import java.io.IOException;
@RestController
@RequestMapping("/email")
public class EmailController {
@Autowired
private EmailService emailService;
@GetMapping("/send")
public String sendEmailWithAttachment() {
try {
// 替换为实际的收件人地址、主题、邮件内容和图片路径
String to = "recipient@example.com";
String subject = "邮件主题";
String text = "邮件正文,包含图片:<img src='cid:imageAttachment'/>"; // 注意使用cid:imageAttachment引用图片附件
String imagePath = "/path/to/your/image.jpg";
emailService.sendEmailWithAttachment(to, subject, text, imagePath);
return "邮件发送成功";
} catch (MessagingException | IOException e) {
e.printStackTrace();
return "邮件发送失败";
}
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
步驟4: 運行應用程式
確保Spring Boot應用程式正確配置,並執行該應用程式。透過存取定義的Controller接口,觸發發送帶有圖片附件的郵件的操作。
這個範例中的程式碼是一個基本的實現,您可能需要根據實際需求進行適當的修改和擴展。確保替換範例中的佔位符(如收件者地址、主題、郵件內容和圖片路徑)為實際的值。
責任編輯:薑華來源: 今日頭條