zeromemos
最好的学习方法就是输出所学的知识

SpringBoot正文为HTML格式带图片邮件发送

继续邮件篇:http://www.zeromemos.com/index/article/read.html?id=322

添加MailService接口方法sendMailWithImg

package com.zeromemos.service;

import java.io.File;

public interface MailService {
    void sendSimpleMail(String to, String subject, String content);
    void sendAttachFileMail(String to, String subject, String content, File file);
    void sendMailWithImg(String to, String subject, String content, String[] srcPath, String[] resIds);
}

MailServiceImpl里实现方法

    /**
     * 发送带图片资源的邮件
     * @param to 收件人
     * @param subject 主题
     * @param content 内容
     * @param srcPath 图片资源路径
     * @param resIds 资源id
     */
    @Override
    public void sendMailWithImg(String to, String subject, String content, String[] srcPath, String[] resIds) {

        //如果路径数量和资源ID数量不一致
        if (srcPath.length != resIds.length) {
            System.out.println("发送失败");
            return;
        }

        try {
            MimeMessage message = javaMailSender.createMimeMessage();
            /*
             * 这里使用MimeMessageHelper简化了邮件配置,
             * 它的构造方法的第二个参数true表示构造一个multipart message类型的邮件,
             * multipart message类型的邮件包含多个正文、附件以及内嵌资源,邮件的表现形式更加丰富
             */
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);//发送者
            helper.setTo(to);//收件者
            helper.setSubject(subject);//主题
            helper.setText(content, true);//第二个参数true表示邮件正文是HTML格式的,该参数不传默认为false。
            //遍历添加图片资源
            for (int i = 0; i < srcPath.length; i++) {
                FileSystemResource res = new FileSystemResource(new File(srcPath[i]));//通过FileSystemResource构造静态资源
                helper.addInline(resIds[i], res);//调用addInline方法将资源加入邮件对象中
            }
            javaMailSender.send(message);
        } catch (MessagingException e) {
            System.out.println("发送失败");
        }
    }

控制器里添加访问方法

    @Autowired
    private MailService mailService;

    @GetMapping("/sendImg/{to}")
    public R sendImg(@PathVariable String to){
        String subject = "邮件主题:XXX";
        String content = "邮件内容:" +
                "<div>hello,这是一封带图片资源的邮件:" +
                "这是图片1:<div><img src='cid:p01'/></div>" +
                "这是图片2:<div><img src='cid:p02'/></div>" +
                "</div>";//通过cid:资源ID来显示图片资源
        String[] srcPath = {
                "C:\\Users\\admin\\Desktop\\1.png",
                "C:\\Users\\admin\\Desktop\\2.png"
        };//桌面放这两张图
        String[] resIds = {"p01", "p02"};//定义资源ID叫p01、p02
        mailService.sendMailWithImg(to, subject, content, srcPath, resIds);
        return R.ok();
    }

用swagger测试接收邮件成功

评论区

关于我们

本站主要用于记录个人学习笔记,网站开发中,如需以前站内资料请加QQ群272473835索取。注册账号仅提供回帖功能,可不注册!

微信公众号