Docker PHP / Apache容器 - Sendmail 553在尝试发送邮件时出现“发件人地址域不存在”错误

时间:2014-10-30 18:19:51

标签: php smtp docker boot2docker

我无法通过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 Mail参数中有一个“From:”标题值,因此不确定为什么它会默认为此。

根据以下评论的要求,我正在添加正在使用的“邮件”功能。我可以确认此函数中有数据,特别是“$ this-&gt; headers”,其中包含From地址。

应该注意的是,我在非容器化环境中运行完全相同的代码,并且电子邮件被正常发送,因此我认为这是容器配置问题。这些是我修改过的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

1 个答案:

答案 0 :(得分:0)

你是如何用PHP发送这封电子邮件的?至少,您可以正确配置您的php.ini文件,以便将smtp服务器设置为正确的值。此外,如果您使用的是PHP邮件功能,则应将$ header参数设置为包含&#34; From:foo@bar.com \ r \ n&#34; ...

的字符串