JavaMailSender发送邮件

发送文本信息

       SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom("robotcs@xx.com"); // 邮件发送者
        message.setTo(address); // 邮件接收者
        message.setSubject(title); // 主题
        message.setText(content); // 邮件内容
        javaMailSender.send(message);

发送HTMl邮件

这种邮件稍后复杂一点,不能直接使用SimpleMailMessage了,可以用下面的方法

try {
                MimeMessage message = javaMailSender.createMimeMessage();
                MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
                helper.setTo(new String[]{contractEntity.getEmail()});//邮件接收者,数组,可以传多个
                helper.setFrom("robotcs@xx.com");//邮件发送者
                helper.setSubject("xx");//邮件主题
                //第一个参数,是html的方格,是String类型,第二个参数是,是否是HTML格式
                helper.setText(htmlText, true);
                //发送邮件
                javaMailSender.send(message);
            } catch (MessagingException e) {
                throw new RuntimeException(e);
            }

发送HTML中带图片

HTML邮件比较复杂,有些CSS语法,不同的邮箱客户端,兼容性不同,比如我自己测试,position: absolutegmail就识别不了。
但HTML中的图片是很常见,有两种方法:

第一种是把图片当作附件加进去以后,HTML就能读取到,如果下:
try {
            MimeMessage message = javaMailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
             helper.setTo(new String[]{"test@text.com"});
lper.setFrom("robotcs@xx.com");
            helper.setSubject("test");
            helper.setText(htmlText true);
            //图片名称,带了路径,放在resource文件夹下面
            String alarmIconName = "email/bg.jpg";
            //获取图片
            ClassPathResource img = new ClassPathResource(alarmIconName);
           //添加图片
            helper.addInline("bg", img);
            //发送邮件
            javaMailSender.send(message);
        } catch (MessagingException ignored) {

        }

HTML模版是下面这样:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body style="width: 420px;height: 596px;">
<div style="width: 420px;height: 596px;">
    //就是这里,src就是图片
    <img  src="cid:bg">
</div>
</body>
</html>

第二种方法,就是直接把图片变成url,先把图片放在网络上,直接填写URL,亲测这种方法,兼容性好一些,如下面这种,是在gamil中,使用背景图的方法
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
    </style>
</head>
<body style="width: 420px;height: 596px;">
<table>
    <tr>
        <td background="https://html.xx.com/ticket/bg.jpg"
            style="background-size: 420px 596px;background-repeat: no-repeat;">
            
        </td>
    </tr>
</table>
</body>
</html>

发送附件

邮件中带附件,也是常用需求

        try {
            MimeMessage mimeMessage = javaMailSender.createMimeMessage();
            MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true);
            messageHelper.setFrom("robotcs@xx.com");
            messageHelper.setTo(new String[]{"mm@text.com", "rr@mm.com"});//接收者
            messageHelper.setSubject("mm");//主题
            messageHelper.setText("請看附件");
            //这里添加附件,第一个参数是附件名称,第二个是文件
            messageHelper.addAttachment("mm.xlsx", new File(fileName));
            javaMailSender.send(mimeMessage);
        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容