Spring Boot 之 发送带有附件的电子邮件

了解如何在Spring Boot应用程序JavaMailSender中发送简单电子邮件以及带有附件的电子邮件,以发送电子邮件。

目录

1。 Maven 
2。 SMTP配置
3.预配置的电子邮件模板
4.发送简单的电子邮件
5.发送带有附件的
电子邮件6.发送带有嵌入式图像的电子邮件
7.演示

1。 Maven

在Spring Boot应用程序中,包括spring-boot-starter-mail依赖项。

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.1.8.RELEASE</version>
</parent>

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

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

2。 SMTP配置

使用spring boot,我们可以在application.properties文件中配置SMTP设置。

2.1。邮箱

debug=true

spring.mail.host=smtp.gmail.com
spring.mail.port=25
spring.mail.username=admin@gmail.com
spring.mail.password=xxxxxx

# Other properties
spring.mail.properties.mail.debug=true
spring.mail.properties.mail.transport.protocol=smtp
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=5000
spring.mail.properties.mail.smtp.writetimeout=5000

# TLS , port 587
spring.mail.properties.mail.smtp.starttls.enable=true

# SSL, post 465
#spring.mail.properties.mail.smtp.socketFactory.port = 465
#spring.mail.properties.mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory

为了能够使用两因素身份验证并关闭“允许不太安全的应用程序”选项,强烈建议使用应用程序密码代替Gmail密码。

请参阅:https : //support.google.com/accounts/answer/185833

如果您可以访问下面的SMTP服务器,请在下面自由使用。

2.2。外表

如果它是某些公司服务器,请从管理员那里查找此信息。

spring.mail.host=smtp-mail.outlook.com
spring.mail.port=587
spring.mail.username=outlookuserid@outlook.com
spring.mail.password=xxxxxx

spring.mail.properties.mail.protocol=smtp
spring.mail.properties.mail.tls=true

spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.ssl.trust=smtp-mail.outlook.com

2.3。AWS SES

从您的AWS设置页面中找到相关配置。[ 阅读更多 ]

spring.mail.host=email-smtp.us-east-1.amazonaws.com
spring.mail.port=465
spring.mail.username=xxxxxxxxxxx
spring.mail.password=xxxxxxxxxxx

spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.ssl.enavle=true

spring.mail.properties.mail.protocol=smtps

spring.mail.properties.mail.smtps.auth=true

3.预先配置的电子邮件模板

我们可以创建电子邮件模板以供每次重用–我们必须定期或在任何特定事件或持续时间内发送电子邮件。在给定的示例中,我们正在使用SimpleMailMessage创建一个非常简单的纯文本电子邮件。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.SimpleMailMessage;

@Configuration
public class EmailConfig 
{
	@Bean
	public SimpleMailMessage emailTemplate()
	{
		SimpleMailMessage message = new SimpleMailMessage();
		message.setTo("user@gmail.com");
		message.setFrom("admin@gmail.com");
		message.setSubject("Important email");
	    message.setText("FATAL - Application crash。 Save your job !!");
	    return message;
	}
}

4.发送简单的电子邮件

为了发送不同类型的电子邮件,我们创建了一个EmailService类,该类可以使用在发送电子邮件之前在电子邮件中设置所需的参数。

@Service("emailService")
public class EmailService 
{
    @Autowired
    private JavaMailSender mailSender;
     
    @Autowired
    private SimpleMailMessage preConfiguredMessage;
 
    /**
     * This method will send compose and send the message 
     * */
    public void sendMail(String to, String subject, String body) 
    {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setTo(to);
        message.setSubject(subject);
        message.setText(body);
        mailSender.send(message);
    }
 
    /**
     * This method will send a pre-configured message
     * */
    public void sendPreConfiguredMail(String message) 
    {
        SimpleMailMessage mailMessage = new SimpleMailMessage(preConfiguredMessage);
        mailMessage.setText(message);
        mailSender.send(mailMessage);
    }
}

5.发送带有附件的电子邮件

使用用于配置的MimeMessageHelper发送多媒体电子邮件MimeMessage。这些mime消息是富文本电子邮件。

6.发送带有内嵌图像的电子邮件

富文本格式包括介于文本内容之间的媒体内容。要在电子邮件中执行此操作,我们必须使用MimeMessageHelperaddInline()方法。

7。 Spring Boot发送电子邮件演示

要使用上述配置发送电子邮件,请更新application.properties文件中的spring.mail.usernamespring.mail.password属性。

现在执行EmailService的方法来发送电子邮件。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application implements CommandLineRunner 
{
	@Autowired
    private EmailService emailService;

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
    
    @Override
    public void run(String..。 args) 
    {
    	emailService.sendMail("lokeshgupta1981@gmail.com", "Hi", "Ho ho ho");
    	
    	emailService.sendPreConfiguredMail("Ho ho ho");
	}
}

将有关使用Spring Boot发送电子邮件的问题交给我。

saigon has written 1445 articles

Leave a Reply