Java通过freemarker模板 发送邮件
时间: 2023-09-11 21:12:00 浏览: 74
要使用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模板发送邮件的基本步骤。
相关推荐
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)