我无法通过 sendmail 在我的 PHP/Apache docker 容器上发送电子邮件。我想知道是否有人有一个简单、直接的解决方案。无论如何,我都不是系统/服务器专家,我的 smtp/sendmail 专业知识同样令人印象深刻。在此先感谢您的帮助。
以下是我收到的错误:
sendmail: 553 5.1.8 <apache@a0aca7313106>... Domain of sender address apache@a0aca7313106 does not exist
显然 apache 是我的用户,右边的东西是我的 docker 容器 ID。在传递的 pHp 邮件参数中有一个“发件人:”标头值,所以不确定为什么它默认为这个值。
根据下面评论的要求,我正在添加正在使用的“邮件”功能。我可以确认此函数中有数据,特别是包含 From 地址的“$this->headers”。
应该注意的是,我在非容器化环境中运行完全相同的代码,并且电子邮件发送正常,所以我认为这是容器配置问题。这些是我修改过的 php.ini 的区域。还有什么我应该寻找的吗?
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25
我将“localhost”更改为非容器化环境中列出的 smtp 服务器,在容器中重新启动了 apache,但仍然收到上面的错误消息。
我可以使用下面评论中列出的参考通过 telnet 连接到我的外部 SMTP 服务器(感谢@mark91)。这是我的输出/成绩单。我应该提一下,我的电子邮件实际上从未收到过(我将自己列为收件人)。我用 ******* 掩盖了信息
telnet smtp.service.******* 25
Trying *******...
Connected to *******.
Escape character is '^]'.
220 ******* ESMTP smtp.service Fri, 31 Oct 2014 14:29:16 -0400
HELO *******
250 ******* Hello [*******], pleased to meet you
MAIL FROM: *******
250 2.1.0 *******... Sender ok
RCPT TO: *******
250 2.1.5 *******... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Hello
.
250 2.0.0 s9VITGpm030795 Message accepted for delivery