在进行开发时,经常会用到需要发送邮件的业务。如果配置了真实的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());
    }
}
最后修改:2024 年 09 月 16 日
如果觉得我的文章对你有用,能不能v我50参加疯狂星期四