【问题标题】:Access to a Server that contain postfix and use it to send mail from spring boot application访问包含 postfix 的服务器并使用它从 Spring Boot 应用程序发送邮件
【发布时间】:2020-05-06 15:01:03
【问题描述】:

我在 Spring Boot 应用程序中创建一个服务来使用 postfix 服务器发送电子邮件,问题是我的机器上没有安装 postfix,要进入 postfix 我应该通过 ssh 连接到远程服务器,然后使用 postfix (后缀在远程服务器的 Docker 容器中)所以在远程机器中应该使用 telnet 连接到后缀。

现在的问题是如何将 spring boot 连接到 postfix?在 application.properties 中具有以下属性:

spring.mail.host=

spring.mail.port=

spring.mail.properties.mail.smtp.auth=false

主机和端口属性里面应该填什么?

请,如果有任何建议,请不要犹豫。

谢谢!

【问题讨论】:

  • 您可以获取用于后缀的远程服务器 IP 地址和端口,并在此处提供相同的值,注意:从 Spring Boot 部署的服务器您应该可以访问远程服务器,或者您可以尝试 docker inspect 在这个你可以看到IP地址也可以试试

标签: java spring-boot docker ssh


【解决方案1】:

只是退后一步,重点介绍顶级结构以及它们“通常”如何组合在一起。

1 在某种抽象级别上,我们可以将“后缀服务器”视为具有邮件队列的服务器,您发送的电子邮件存储在其中等待通过端口 25 SMTP(电子邮件)管道发送。

2 我们可以使用java mail api [1] 在 java 中通过此管道轻松发送电子邮件。

请注意,这在 Java SE 中可用,因此我们可以从 Spring Boot 中使用它。虽然 Spring 可能有各种我们可以利用的电子邮件包,但使用 java Mail API 可以很好地在任何 Spring 生态系统之外进行代码重用

3 在高层使用 [1] 时,我们首先构造一个会话对象

val session = Session.getInstance(<some properties>, <some auth scheme can be null)

然后我们将使用此会话构造一个电子邮件消息对象

    val msg = new MimeMessage(session)

然后我们将它发送到带有 Transport 静态类的 postfix mailq

    Transport.send(msg);

只要这发生在“后缀服务器”上并且会话和消息对象构造正确,那么您的消息应该最终在 mailq 中并通过管道发送。 很多细节可以在here开始的邮件api的java文档中找到

总结 带有 java 邮件 api 的 Spring Boot 应用程序在设置了 postfix 的服务器上运行。

【讨论】:

    猜你喜欢
    • 2018-01-25
    • 2023-03-18
    • 1970-01-01
    • 2013-10-24
    • 2019-03-04
    • 2018-02-21
    • 2023-03-25
    • 2011-09-17
    • 2011-12-10
    相关资源
    最近更新 更多