TypechoJoeTheme

LiXiangrong

统计
登录
用户名
密码
/
注册
用户名
邮箱

LiXiangrong

被命运反复捉弄的你呀,收藏了多少动人的情话。

springboot发送简单的邮件

2020-11-27
/
0 评论
/
172 阅读
/
正在检测是否收录...
11/27

springboot发送简单的邮件——以163邮箱为例

1.开启邮件POP3/SMTP服务,获得授权码



然后在pom.xml文件中引入依赖:

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

2.编写邮件服务配置文件application.properties

# 邮箱配置
spring.mail.host=smtp.163.com
# 你的163邮箱
spring.mail.username=18070554068@163.com
# 注意这里不是邮箱密码,而是SMTP授权密码
spring.mail.password=***********
spring.mail.port=25
spring.mail.protocol=smtp
spring.mail.default-encoding=UTF-8

3.编写前端页面:

<div class="context">
        <h2 align="center">邮件发送页面</h2>
        <form th:action="@{/domail}"  method="post">
            <div    class="input" >发件人:<input readonly="readonly" th:value="${from}"/></div><br/>
            <div class="input">收件人:<input type="text"  name="to"/></div><br/>
            <div class="input" >主&nbsp&nbsp;&nbsp;题:<input type="text" name="subject"/></div><br/>
            内&nbsp;&nbsp;&nbsp;容:
            <textarea name="content"></textarea><br/>
            <div align="center">
                <button type="submit" value="发送">发送</button>&nbsp;&nbsp;&nbsp;
                <button type="reset" value="重置">重置</button>
            </div>
        </form>
    </div>


由于前端页面使用了thymeleaf模板语法,pom文件中也需要引入依赖:

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

在前端页面html lang="en" 后面添加xmlns:th="http://www.thymeleaf.org"语句才会有提示:

<html lang="en" xmlns:th="http://www.thymeleaf.org">

4.编写服务类EmailService.java

@Service
public class EmailService {

    @Autowired
    public JavaMailSender javaMailSender;

    @Value("${spring.mail.username}")
    public String from;

    public void sendSimpleEmail(String to, String subject,
                                String content) throws MailException {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(from);
        message.setTo(to);
        message.setSubject(subject);
        message.setText(content);
        javaMailSender.send(message);
    }

    public void SendEmailAttachMent() throws MessagingException{
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
        mimeMessageHelper.setSubject("富文本测试");
        mimeMessageHelper.setFrom(from);
        mimeMessageHelper.setTo(from);
        mimeMessageHelper.setCc("2287825832@qq.com");
        mimeMessageHelper.setSentDate(new Date());
        mimeMessageHelper.setText("发送文件");
//        mimeMessageHelper.addAttachment("4.jpg", new File("F:\\file\\4.jpg"));
        FileSystemResource file = new FileSystemResource(new File("F:\\file\\2.jpg"));
        String filename = file.getFilename();
        mimeMessageHelper.addAttachment(filename, file);
        javaMailSender.send(mimeMessage);
    }
}

5.编写控制类MailController.java

@Controller
public class MailController {
    @Autowired
    EmailService emailService;
    @RequestMapping("/sendmail")
    public String sendmail(Model model){
        model.addAttribute("from",emailService.from);
        return "sendmail";
    }

    @RequestMapping("/domail")
    public String sendmail(String to, String subject, String content){
        System.out.println(to+subject+content);
        try {
            emailService.sendSimpleEmail(to, subject, content);
            System.out.println("发送成功!");
            return "redirect:/list";
        }catch (MailException e){
            System.out.println(e.getMessage()+"发送失败");
            return "redirect:/list";
        }

    }
}

解释:控制类中 “@RequestMapping("/sendmail")”的/sendmail是请求路由,“return "sendmail";”是指编写的sendmail.html前端页面,“model.addAttribute("from",emailService.from);”是把服务类中定义的“public String from;”传到前端的发件人输入框,而服务类中定义的from变量来自“@Value("${spring.mail.username}")”,也就是“application.properties”配置文件中定义好的用户名“spring.mail.username”,前端要接收控制类传递的数据,除了路由要正确之外,前端thymeleaf模板语法th:value="${from}"要写对,其中的from就是“model.addAttribute("from",emailService.from);”的from。而前端表单要把数据提交给后台处理,提交的路由th:action="@{/domail}"中的domail指的是控制类的@RequestMapping("/domail")的domail,并且每一个输入框的属性name值name="to", name="subject",name="content"要和后端定义的public String sendmail(String to, String subject, String content)方法参数对应上,后端控制类才能接收到前端传递的数据并处理。
以上就是关于简单发送邮件的方法,还有发送附件、HTML文件等可以举一反三,时间有限这里就不多作说明。
如果有疑问请联系我。

springboot发送简单的邮件
朗读
赞 · 1
版权属于:

LiXiangrong

本文链接:

https://lxrao.com/index.php/archives/25/(转载时请注明本文出处及文章链接)

评论 (0)
本篇文章评论功能已关闭

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月

今日天气

微博热搜榜

  • 获取失败!

标签云