enviar email
Quando o servidor de um site envia um e-mail para um usuário, o e-mail geralmente precisa conter fotos, links e outros conteúdos. Então, por conveniência, geralmente enviamos e-mails em formato HTML, então como escrever um e-mail em formato HTML? — Tomilho.
Antes de começar, crie um novo projeto SpringBoot e adicione as dependências necessárias. Então você pode continuar para baixo.
1. Configurações da caixa de correio
1.1 Ativar serviço POP3/SMTP do cliente
Antes de tudo, precisamos de uma conta de e-mail. Escolhi o e-mail Sina aqui, registre-se e faça o login. É relativamente simples aqui. Basta abrir as configurações, encontrar o cliente e abrir o serviço POP3/SMTP.
2、E-mail da Primavera
2.1 Importar o pacote jar
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.7.2</version>
</dependency>
2.2 Configurações de parâmetros da caixa postal
Após importar o pacote, também precisamos configurar alguns parâmetros para a caixa de correio no programa.Se quisermos usar esta caixa de correio no programa, precisamos configurar a conta, senha, link de acesso e protocolo da caixa de correio. Se você quiser alterar a caixa de correio mais tarde, você só precisa alterar o arquivo de configuração. Lembre-se de não escrever a caixa de correio até a morte no programa Java. Vamos configurar os parâmetros abaixo.
spring:
# MailProperties 邮箱设置
mail:
host: smtp.sina.com # 声明邮箱域名
port: 465 # 邮箱端口
username: [email protected] # 邮箱账号
password: be157646ac7d3754 # 邮箱授权码
protocol: smtps # 协议
# 发送邮件时采用ssl安全连接
properties:
mail:
smtp:
ssl:
enable: true
2.3 Enviando e-mails usando JavaMailSender
Em seguida, podemos escrever o código para enviar e-mails. O núcleo do Spring Email enviando e-mails é JavaMailSender. Enviamos e-mails chamando essa interface. Escrevemos uma classe de ferramentas aqui e, em seguida, encapsulamos todo o processo lógico de envio de e-mails, que podem ser usados repetidamente.
@Component
public class MailClient {
// 声明一个logger,用来记录日志
private static final Logger logger = LoggerFactory.getLogger(MailClient.class);
@Autowired
private JavaMailSender mailSender;
// 发件人
@Value("${spring.mail.username}")
private String from;
// to:收件人 subject:邮件标题 content:邮件内容
public void sendMail(String to,String subject,String content) {
try {
MimeMessage message = mailSender.createMimeMessage();
// 构建 MimeMessage 的内容
MimeMessageHelper helper = new MimeMessageHelper(message);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true); // true表示支持html文本
mailSender.send(helper.getMimeMessage());
} catch (MessagingException e) {
logger.error("发送邮件失败:" + e.getMessage());
}
}
}
发送一份邮件需要发件人、收件人、邮件标题。邮件内容,而通过服务器发邮件,发件人是固定的,所以我们通过@Value将其注入进来。
2.4 Teste simples
Depois que a configuração estiver concluída, podemos escrever uma classe de teste para testar se podemos enviar e-mails.
@SpringBootTest
public class MailTests {
@Autowired
private MailClient mailClient;
@Test
public void testTextMail() {
mailClient.sendMail("[email protected]","测试邮件","Welcome!!!");
}
@Test
public void testHtmlMail() {
Context context = new Context();
context.setVariable("username","Lucy");
String content = templateEngine.process("/mail/demo", context);
System.out.println(content);
mailClient.sendMail("[email protected]","HTML测试",content);
}
}
3. Mecanismo de modelo
3.1 Enviando e-mails HTML com Thymeleaf
Por fim, vamos dar uma olhada em como usar o mecanismo de modelo Thymeleaf para enviar e-mails formatados em HTML, para que os e-mails possam conter conteúdo mais rico.
- Primeiro, escrevemos um modelo de e-mail simples
demo.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>邮件示例</title>
</head>
<body>
<p>亲爱的, <span style="color:red;" th:text="${username}"></span>!</p>
<p>最近怎么样?我希望你的生活有点变化,至少是每当你歇班的时候不要一个人呆在宿舍里睡大觉,应该有一个帅哥哥陪着你逛商场,当你看到一件你想买又一直不舍得买的东西时,刚好他的兜里有足够的钱,逛完商场陪你吃晚饭,然后为你买一大包零食再把你送回宿舍。这种待遇如果恋爱的时候不好好享受一下,结婚后恐怕就很难再找到感觉了。</p>
<p>XX,一定要嫁给一个真心实意爱你的男人,嫁给一个品行好的男人,或许他会与你心中的白马王子有一定的差距,但在今后的生活中,你会感觉到,他对你的感情是你无穷无尽的幸福宝藏,有这座宝藏在心中,你会比任何一个女人都幸福。</p>
<p>...</p>
<p>爱你的男孩</p>
</body>
</html>
- Em seguida, escreva um método de teste também
@SpringBootTest
public class MailTests {
@Autowired
private MailClient mailClient;
@Autowired
private TemplateEngine templateEngine;
@Test
public void testHtmlMail() {
Context context = new Context();
context.setVariable("username","XX");
// 调用templateEngine的process方法生成动态网页
// 并且需要将模板文件的位置以及数据传给他
String content = templateEngine.process("/mail/demo", context);
// 这里可以将生成的网页打印在控制台查看一下
System.out.println(content);
// 发送邮件
mailClient.sendMail("[email protected]","写给心爱女孩的一封信",content);
}
}
Saída do console:
Página de e-mail enviado com sucesso
Em geral, enviar e-mails é uma técnica relativamente simples. Mas ela não é! ! !