Java发送邮件,优美html邮件模板分享

以前有用JavaMail写过发送html邮件,当时在benchmark自己设计了个html模板,分享记录一下。

      • 2020-12-03 更新

最近做了一个email通知功能,又优化设计了一下之前的邮件通知模板。
效果如下:
在这里插入图片描述
以上模板的html文件已上传gitee码云
https://gitee.com/bhy702/email-template.html
或者
点这里直接下载
云盘密码: bhy702tpl

以上html邮件模板对应的html邮件发送代码可参考springboot多线程异步发送email,html模板渲染


      • 原文

以下模板的邮件通知演示地址:点这里 点击联系我,留言后,会接收到访客留言反馈邮件。

预览:

访客反馈端

在这里插入图片描述
以上模板的html文件下载
下载点这里
云盘密码: emailpw1


留言通知端

在这里插入图片描述
以上模板的html文件下载
下载点这里
密码: emailpw2


  • 2020-12-03 建议使用springboot+thymeleaf完成模板的变量数据填充,完善代码可参考上面最新的html邮件发送代码链接。

Java实现发送html邮件可参考博客SpringBoot使用JavaMailSender实现发送邮件功能【注意】 需要将博客中邮件发送方法sendSimpleMail改为以下sendHtmlMail方法实现即可。

	// 发送html格式邮件
    public static JsonResult sendHtmlMail(JavaMailSender javaMailSender,String email, String subject, String content) {

        MimeMessage message = javaMailSender.createMimeMessage();
        try {
            //true表示需要创建一个multipart message
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom("xxx"+"<"+"xxxxxxx@qq.com"+">");
            helper.setTo(email);
            helper.setSubject(subject);
            helper.setText(content, true);

            javaMailSender.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
            return JsonResult.error("哎呀~邮件服务器抽风了");
        } catch (MailAuthenticationException e) {
            e.printStackTrace();
            return JsonResult.error("哎呀~邮件服务器抽风了");
        } catch (Exception e) {
            e.printStackTrace();
            return JsonResult.error("邮件发送失败");
        }
        return JsonResult.success("邮件发送成功");
    }

欢迎访问本文的个人博客链接: https://br-bai.github.io/2019/09/24/Java发送邮件,html邮件模板分享/

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
要使用Freemarker模板发送邮件,需要进行以下步骤: 1. 导入需要的依赖 在Maven项目中,需要在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.7</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-tools</artifactId> <version>2.0</version> </dependency> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency> ``` 2. 编写Freemarker模板 比如我们可以编写一个简单的模板,如下: ``` <html> <body> <h1>Hello ${username}!</h1> <p>Here is your message:</p> <p>${message}</p> </body> </html> ``` 在模板中,我们可以使用Freemarker的语法来动态生成HTML内容。 3. 编写Java代码 我们可以编写一个名为`EmailService`的Java类来发送邮件。 首先,我们需要创建一个`VelocityEngine`对象,来加载Freemarker模板: ``` VelocityEngine velocityEngine = new VelocityEngine(); velocityEngine.init(); ``` 然后,我们可以使用`VelocityEngine`对象来加载模板文件: ``` Template template = velocityEngine.getTemplate("email-template.vm"); ``` 接下来,我们需要创建一个`VelocityContext`对象,并将模板中需要填充的变量添加到该对象中: ``` VelocityContext context = new VelocityContext(); context.put("username", username); context.put("message", message); ``` 最后,我们可以使用`JavaMail`库来发送邮件: ``` Properties properties = new Properties(); properties.put("mail.smtp.host", "smtp.gmail.com"); properties.put("mail.smtp.port", "587"); properties.put("mail.smtp.auth", "true"); properties.put("mail.smtp.starttls.enable", "true"); Session session = Session.getInstance(properties, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(fromEmail, password); } }); Message message = new MimeMessage(session); message.setFrom(new InternetAddress(fromEmail)); message.setRecipient(Message.RecipientType.TO, new InternetAddress(toEmail)); message.setSubject(subject); StringWriter writer = new StringWriter(); template.merge(context, writer); MimeBodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setContent(writer.toString(), "text/html"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); message.setContent(multipart); Transport.send(message); ``` 在以上代码中,我们首先创建了一个`Properties`对象来配置邮件服务器的信息。然后,我们创建了一个`Session`对象,并使用`Authenticator`对象来进行SMTP认证。接着,我们创建了一个`MimeMessage`对象,并设置了邮件的发送者、接收者和主题。然后,我们将模板生成的HTML内容添加到`MimeBodyPart`对象中,最后将`MimeBodyPart`对象添加到`Multipart`对象中,并将`Multipart`对象设置为邮件的内容。最后,我们使用`Transport`对象的`send`方法来发送邮件。 这就是使用Freemarker模板发送邮件的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值