springboot简单使用邮件功能

1,准备

①,首先发送邮箱要开启特定服务,这里以qq邮箱为例

②,开启

③,获取密码

点击生成授权码,然后发送短信到指定的地方,便能获取密码

2,配置

①,pom.xml

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

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

②,application.properties 配置

spring.mail.host=smtp.qq.com
[email protected]
#这里填写你收到的那个密码
spring.mail.password=xxx
#必须开启,否则会报503错误
spring.mail.properties.mail.smtp.ssl.enable=true

3,查看MailSenderAutoConfiguration

它为我们配置了一个JavaMailSenderImpl,而我们也就是通过这个bean进行收发邮件

@Bean
	public JavaMailSenderImpl mailSender() {
		JavaMailSenderImpl sender = new JavaMailSenderImpl();
		if (this.session != null) {
			sender.setSession(this.session);
		}
		else {
			applyProperties(sender);
		}
		return sender;
	}

4,测试代码编写

①,由于发送邮件一般不要求实时,所以建议开启异步

@EnableAsync//开启异步
@SpringBootApplication
public class TaskApplication {

    public static void main(String[] args) {
        SpringApplication.run(TaskApplication.class, args);
    }
}

②,发送邮件的代码编写

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;

@Service
public class MailService {
    @Autowired
    private JavaMailSender javaMailSender;

    /*发送简单邮件*/
    @Async
    public String send() {
        SimpleMailMessage message=new SimpleMailMessage();
        message.setSubject("告白");
        message.setText("见什么世面,见见你就好了");

        message.setTo("[email protected]");
        message.setFrom("[email protected]");
        javaMailSender.send(message);
        return "邮件发送成功。。。。";
    }
    /*发送带html文本以及带上附件*/
    @Async
    public String sendHtml() {
        MimeMessage message=javaMailSender.createMimeMessage();
        try {
            MimeMessageHelper helper=new MimeMessageHelper(message,true);//支持文件上传
            helper.setSubject("告白");
            helper.setText("<font color='red'>想你,老戴里都是你</font>",true);

            helper.setTo("[email protected]");
            helper.setFrom("[email protected]");

            helper.addAttachment("dm.jpg",new File("D:\\dev\\IdeaProjects\\springboot\\task\\src\\main\\resources\\dm.jpg"));
            javaMailSender.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
        }

        return "邮件发送成功。。。。";
    }
}

③,controller层代码如下

import com.ts.task.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MailController {

    @Autowired
    private MailService mailService;

    @RequestMapping("send")
    public String send() {
      mailService.send();
      return "邮件发送成功。。。。";
    }
    /*发送html文本以及带上附件*/
    @RequestMapping("sendHtml")
    public String sendHtml() {
        mailService.sendHtml();
        return "邮件发送成功。。。。";
    }
}

5,测试

①,发送简单邮件

②,发送带附件,html文本的邮件

6,结果

①,

②,

③,

猜你喜欢

转载自my.oschina.net/u/3574106/blog/1815542
今日推荐