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接口,觸發發送帶有圖片附件的郵件的操作。

這個範例中的程式碼是一個基本的實現,您可能需要根據實際需求進行適當的修改和擴展。確保替換範例中的佔位符(如收件者地址、主題、郵件內容和圖片路徑)為實際的值。

責任編輯:薑華來源: 今日頭條