Fargate:将电子邮件发送到端口25上的私有smtp服务器

时间:2019-07-17 14:49:28

标签: java amazon-web-services spring-boot smtp amazon-ecs

我将AWS Fargate用作容器平台。我的容器基础映像是openjdk:8-alpine,该应用程序是spring-boot应用程序。我正在尝试使用JavaMailSender通过vpn隧道将电子邮件发送到端口25上的内部SMTP服务器。当使用相同的SMTP服务器在本地测试容器时,此方法有效。

我在Spring Boot应用程序中主要将本指南https://www.baeldung.com/spring-email用于电子邮件功能。

如果将以下命令添加到docker入口点,则将测试主机名解析和telnet连接。 host和dig命令始终有效。有时telnet可以工作,而其他时候它将超时,从而导致容器的重新部署。发送电子邮件时,我会看到相同的行为。一些电子邮件将发送,而另一些电子邮件则由于连接到SMTP服务器超时而失败。

## Dockerfile

FROM openjdk:8-alpine

COPY core/target/app.jar /app/app.jar

WORKDIR /app

CMD CMD host $my_smtp_server \
       && dig $my_smtp_server \
       && telnet $my_smtp_server 25 \
       && java -jar $app.jar

EXPOSE 8080 25

## application.properties

# Mail config
#------------
spring.mail.default-encoding=UTF-8
spring.mail.host=$my_smtp_server
spring.mail.port=25
spring.mail.protocol=smtp

spring.mail.properties.mail.smtp.starttls.enable=false
spring.mail.properties.mail.smtp.starttls.required=false
spring.mail.properties.mail.smtp.auth=false
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=5000
spring.mail.properties.mail.smtp.writetimeout=5000
#------------

每次我在应用程序中调用该函数时,都应该发送电子邮件。

0 个答案:

没有答案