请注意,本文编写于 132 天前,最后修改于 66 天前,其中某些信息可能已经过时。
在进行开发时,经常会用到需要发送邮件的业务。如果配置了真实的SMTP密码来进行测试,且不说调试过程会给你生成一堆垃圾邮件的麻烦,如果你不小心将密码传到了公共仓库上,那会造成很多不必要的麻烦,所以Mailpit就是用于解决这些问题的工具。Mailpit 为想要测试 SMTP 和电子邮件的开发人员提供了丰富的功能。不仅充当 SMTP 服务器、提供现代化的 Web 界面来查看和测试拦截的电子邮件,还包含用于自动集成测试的 API。
快速安装
官方推荐使用Docker安装,Docker 镜像可以在https://hub.docker.com/r/axllent/mailpit上找到,也可以通过一下命令直接一键部署
docker run -d --restart unless-stopped --name=mailpit -e SMTP_AUTH_ACCEPT_ANY=true -e MP_MAX_MESSAGES=5000 -e MP_SMTP_AUTH_ALLOW_INSECURE=true -p 8025:8025 -p 1025:1025 axllent/mailpit
其中8025为web端口,1025为SMTP端口,SMTP_AUTH_ACCEPT_ANY
变量设置为true代表支持任何账号密码登录到该邮箱服务,无需自行设置密码
需要更详细的环境变量配置,可以参考官方文档的Runtime options:https://mailpit.axllent.org/docs/configuration/runtime-options/
如果不想在docker中安装,可以自行前往官方Release页面寻找二进制文件:https://github.com/axllent/mailpit/releases
简单测试例
以下是一个Java的测试例,集成Spring Boot
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置文件如下:
spring:
mail:
host: localhost
username: test
password: test
port: 1025
创建测试类Mail
@SpringBootTest
public class Mail {
@Resource
JavaMailSender sender;
private SimpleMailMessage createMessage() {
SimpleMailMessage message = new SimpleMailMessage();
message.setSubject("Test");
message.setText("Just a test");
message.setTo("[email protected]");
message.setFrom("Admin");
return message;
}
@Test
void name() {
sender.send(createMessage());
}
}