使用 PHPMailer 时 Docker Swarm 下的主机无效

问题描述 投票:0回答:1

我正在 docker swarm 上配置使用 PHPMailer 的开放日志系统。我有两张图像,一张正在运行

php-fpm
,另一张正在运行
postfix
。从
php-fpm
,我可以使用 docker swarm 配置中声明的名称访问
postfix
,我什至可以 telnet 到已配置的端口 postfix(甚至可以从 bash 发送电子邮件)。

尽管如此,当我的主机名是

invalid host
(docker 容器的名称)时,PHPMailer 仍在抱怨
foo_postfix

可能发生什么事?

更新

查看代码,主机名是这样验证的

if (filter_var('http://' . $host, FILTER_VALIDATE_URL) !== false)
因此,它失败了。

那么,我可能只需要保证这些 docker 容器有一个域?也许 docker swarm 容器有一个默认域?

修复:

不将此作为答案发布,因为我认为这没有意义。但我通过向容器添加别名解决了问题:

    networks:
      netName
        aliases:
          - foo.postfix
          - foo_postfix

这样 PHP 代码接受

foo.postfix
作为域名。

php phpmailer docker-swarm ojs
1个回答
0
投票

我们也有同样的问题。在 PHPMailer 代码中,我看到这个验证主机的正则表达式:

/^((ssl|tls):\/\/)*([a-zA-Z0-9\.-]*|\[[a-fA-F0-9:]+\]):?([0-9]*)$/

不允许使用下划线字符。您的修复是正确的。您可以使用“.”。或“-”作为主机名的分隔符。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.