小记:在Docker上搭建postfix并用javaMail测试

所需环境

  • 一台可连外网的ubuntu服务器
  • 一个可用的域名

注意事项:

  • 请检查服务是是否可以使用25端口(主要是出口端口)

搭建步骤

  1. 设置域名解析
  2. 搭建服务器
  3. 编写javaMail
  4. 测试发送

设置域名解析

假设你的主域名为example.com

这里需要设置以下几个域名:

主机记录 记录类型 记录值
mail 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环境,我们假设读者已拥有以上环境。

  1. 拉取catatnight/docker-postfix
docker pull catatnight/postfix
  1. 运行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
作者
Cikaros
发布于
2020年11月9日
许可协议