小记:在Docker上搭建postfix并用javaMail测试
所需环境
- 一台可连外网的ubuntu服务器
- 一个可用的域名
注意事项:
- 请检查服务是是否可以使用25端口(主要是出口端口)
搭建步骤
- 设置域名解析
- 搭建服务器
- 编写javaMail
- 测试发送
设置域名解析
假设你的主域名为example.com
这里需要设置以下几个域名:
主机记录 | 记录类型 | 记录值 |
---|---|---|
A | 你的邮箱服务器IP | |
pop | A | 你的邮箱服务器IP |
stmp | A | 你的邮箱服务器IP |
pop3 | A | 你的邮箱服务器IP |
imap | A | 你的邮箱服务器IP |
@ | MX | mail.example.com |
@ | TXT | v=spf1 a mx ~all |
这里你可以使用以下命令进行测试:
nslookup -qt=mx example.com
nslookup -qt=txt example.com
搭建服务器
这里我们使用的是ubuntu系统,安装环境为Docker环境,我们假设读者已拥有以上环境。
- 拉取catatnight/docker-postfix
docker pull catatnight/postfix
- 运行docker
docker run -p 25:25 \
-e maildomain=example.com -e smtp_user=user:pwd \
--name postfix -d catatnight/postfix
编写代码测试
这里我使用的是Springboot+JavaMail
所需依赖
<!--邮件发送-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
编写Mail工具
application.yml
spring:
mail:
default-encoding: UTF-8
host: smtp.example.com
username: 账号@example.com
password: 密码
port: 25
protocol: smtp
properties:
mail:
smtp:
# 邮件接收时间的限制,单位毫秒
timeout: 10000
# 连接时间的限制,单位毫秒
connectiontimeout: 10000
# 邮件发送时间的限制,单位毫秒
writetimeout: 10000
EmailTool.Java
package org.cikaros.util;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
/**
* 邮箱工具类
*
* @author Cikaros QQ:1032325640
* @date 2020/6/12 4:24
*/
@Component
public class EmailTool {
@Resource
private JavaMailSender javaMailSender;
@Value("${spring.mail.username}")
private String from;
public void sendSimpleMail(String to, String subject, StringBuilder httpText) throws MessagingException {
MimeMessage message = null;
message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(httpText.toString(), true);
javaMailSender.send(message);
}
}
MailTest.Java
package org.cikaros.test;
import org.cikaros.util.EmailTool;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
import javax.mail.MessagingException;
/**
* 邮件发送测试
*
* @author Cikaros QQ:1032325640
* @date 2020/11/5 13:31
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class MailTest {
@Resource
private EmailTool emailTool;
@Test
public void test() throws MessagingException {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("欢迎使用小纸条!这是你的验证码:1101");
emailTool.sendSimpleMail("1032325640@qq.com","欢迎使用小纸条",stringBuilder);
System.out.println("end");
}
}
完成上述操作后运行即可!

小记:在Docker上搭建postfix并用javaMail测试
https://blog.cikaros.top/doc/b0f10df4.html