SpringBoot中怎么发送QQ邮件

发布时间:2021-12-07 14:15:47 作者:iii
来源:亿速云 阅读:170

SpringBoot中怎么发送QQ邮件

在现代的Web应用程序中,发送电子邮件是一个常见的需求。无论是用户注册验证、密码重置,还是通知和提醒,电子邮件都扮演着重要的角色。Spring Boot 提供了简单而强大的方式来集成邮件发送功能。本文将详细介绍如何在 Spring Boot 项目中发送 QQ 邮件。

1. 准备工作

在开始之前,我们需要确保以下几点:

  1. QQ邮箱账号:你需要一个QQ邮箱账号,并且已经开启了SMTP服务。
  2. Spring Boot 项目:确保你已经创建了一个Spring Boot项目,并且项目已经配置好。

1.1 开启QQ邮箱的SMTP服务

  1. 登录QQ邮箱。
  2. 进入“设置” -> “账户”。
  3. 找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”部分。
  4. 开启“POP3/SMTP服务”和“IMAP/SMTP服务”。
  5. 生成授权码,这个授权码将用于代替密码进行SMTP认证。

2. 添加依赖

在Spring Boot项目中,我们需要添加spring-boot-starter-mail依赖来支持邮件发送功能。打开pom.xml文件,添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

3. 配置邮件服务器

application.propertiesapplication.yml文件中,配置QQ邮箱的SMTP服务器信息。以下是一个示例配置:

# QQ邮箱SMTP服务器配置
spring.mail.host=smtp.qq.com
spring.mail.port=587
spring.mail.username=your_qq_email@qq.com
spring.mail.password=your_authorization_code
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

4. 创建邮件服务类

接下来,我们创建一个邮件服务类EmailService,用于发送邮件。在这个类中,我们将使用JavaMailSender来发送邮件。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;

@Service
public class EmailService {

    @Autowired
    private JavaMailSender mailSender;

    public void sendSimpleEmail(String to, String subject, String text) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setTo(to);
        message.setSubject(subject);
        message.setText(text);
        mailSender.send(message);
    }
}

5. 发送简单文本邮件

现在,我们已经配置好了邮件服务器并创建了邮件服务类,接下来我们可以编写一个简单的测试方法来发送邮件。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class EmailTest implements CommandLineRunner {

    @Autowired
    private EmailService emailService;

    @Override
    public void run(String... args) throws Exception {
        emailService.sendSimpleEmail("recipient@example.com", "Test Subject", "This is a test email.");
    }
}

6. 发送HTML格式的邮件

除了发送简单的文本邮件,我们还可以发送HTML格式的邮件。HTML邮件可以包含更丰富的内容,如链接、图片等。

6.1 修改邮件服务类

我们需要修改EmailService类,添加一个发送HTML邮件的方法。

import org.springframework.beans.factory.annotation.Autowired;
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;

@Service
public class EmailService {

    @Autowired
    private JavaMailSender mailSender;

    public void sendSimpleEmail(String to, String subject, String text) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setTo(to);
        message.setSubject(subject);
        message.setText(text);
        mailSender.send(message);
    }

    public void sendHtmlEmail(String to, String subject, String htmlContent) throws MessagingException {
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        helper.setTo(to);
        helper.setSubject(subject);
        helper.setText(htmlContent, true);
        mailSender.send(message);
    }
}

6.2 发送HTML邮件

现在,我们可以编写一个测试方法来发送HTML邮件。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class EmailTest implements CommandLineRunner {

    @Autowired
    private EmailService emailService;

    @Override
    public void run(String... args) throws Exception {
        String htmlContent = "<h1>This is a HTML email</h1><p>This is a <b>test</b> email.</p>";
        emailService.sendHtmlEmail("recipient@example.com", "HTML Email Subject", htmlContent);
    }
}

7. 发送带附件的邮件

在某些情况下,我们可能需要发送带附件的邮件。Spring Boot 也支持发送带附件的邮件。

7.1 修改邮件服务类

我们需要修改EmailService类,添加一个发送带附件邮件的方法。

import org.springframework.beans.factory.annotation.Autowired;
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.File;

@Service
public class EmailService {

    @Autowired
    private JavaMailSender mailSender;

    public void sendSimpleEmail(String to, String subject, String text) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setTo(to);
        message.setSubject(subject);
        message.setText(text);
        mailSender.send(message);
    }

    public void sendHtmlEmail(String to, String subject, String htmlContent) throws MessagingException {
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        helper.setTo(to);
        helper.setSubject(subject);
        helper.setText(htmlContent, true);
        mailSender.send(message);
    }

    public void sendEmailWithAttachment(String to, String subject, String text, String attachmentPath) throws MessagingException {
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        helper.setTo(to);
        helper.setSubject(subject);
        helper.setText(text);

        File file = new File(attachmentPath);
        helper.addAttachment(file.getName(), file);

        mailSender.send(message);
    }
}

7.2 发送带附件的邮件

现在,我们可以编写一个测试方法来发送带附件的邮件。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class EmailTest implements CommandLineRunner {

    @Autowired
    private EmailService emailService;

    @Override
    public void run(String... args) throws Exception {
        String attachmentPath = "path/to/your/attachment/file.txt";
        emailService.sendEmailWithAttachment("recipient@example.com", "Email with Attachment", "This is a test email with attachment.", attachmentPath);
    }
}

8. 发送带内嵌图片的邮件

在某些情况下,我们可能需要在邮件中嵌入图片。Spring Boot 也支持发送带内嵌图片的邮件。

8.1 修改邮件服务类

我们需要修改EmailService类,添加一个发送带内嵌图片邮件的方法。

import org.springframework.beans.factory.annotation.Autowired;
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.File;

@Service
public class EmailService {

    @Autowired
    private JavaMailSender mailSender;

    public void sendSimpleEmail(String to, String subject, String text) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setTo(to);
        message.setSubject(subject);
        message.setText(text);
        mailSender.send(message);
    }

    public void sendHtmlEmail(String to, String subject, String htmlContent) throws MessagingException {
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        helper.setTo(to);
        helper.setSubject(subject);
        helper.setText(htmlContent, true);
        mailSender.send(message);
    }

    public void sendEmailWithAttachment(String to, String subject, String text, String attachmentPath) throws MessagingException {
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        helper.setTo(to);
        helper.setSubject(subject);
        helper.setText(text);

        File file = new File(attachmentPath);
        helper.addAttachment(file.getName(), file);

        mailSender.send(message);
    }

    public void sendEmailWithInlineImage(String to, String subject, String text, String imagePath) throws MessagingException {
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        helper.setTo(to);
        helper.setSubject(subject);
        helper.setText(text, true);

        File file = new File(imagePath);
        helper.addInline("image", file);

        mailSender.send(message);
    }
}

8.2 发送带内嵌图片的邮件

现在,我们可以编写一个测试方法来发送带内嵌图片的邮件。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class EmailTest implements CommandLineRunner {

    @Autowired
    private EmailService emailService;

    @Override
    public void run(String... args) throws Exception {
        String imagePath = "path/to/your/image/image.png";
        String htmlContent = "<h1>This is a HTML email with inline image</h1><p>This is a <b>test</b> email.</p><img src='cid:image'>";
        emailService.sendEmailWithInlineImage("recipient@example.com", "Email with Inline Image", htmlContent, imagePath);
    }
}

9. 总结

通过本文的介绍,我们学习了如何在Spring Boot项目中发送QQ邮件。我们首先配置了QQ邮箱的SMTP服务器信息,然后创建了一个邮件服务类,用于发送简单文本邮件、HTML邮件、带附件的邮件以及带内嵌图片的邮件。通过这些方法,我们可以轻松地在Spring Boot项目中集成邮件发送功能,满足各种业务需求。

希望本文对你有所帮助,祝你在Spring Boot项目中顺利实现邮件发送功能!

推荐阅读:
  1. Python怎么使用QQ邮箱发送邮件
  2. python中如何使用QQ邮箱发送邮件

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

springboot

上一篇:如何配置基于ceph集群的iSCSI传输服务

下一篇:cdh5 beta2集群配置文件的示例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》