【发布时间】:2015-05-06 19:22:15
【问题描述】:
我正在使用以下 PHP 邮件命令在防火墙后面的两个不同的基于 linux 的服务器上发送电子邮件。
1.) 当使用常规电子邮件地址 (username@domain.com) 时,两者都可以工作
2.) 当字符串 $to 值是移动提供商的文本消息电子邮件等价物时,只有一个服务器能够成功发送消息。
发送短信时工作的服务器显示简单:220 mail.domain.com ESMTP
不工作的服务器显示如下:220 domain.com ESMTP Postfix (Ubuntu)
在两台服务器上都可以正常工作:
mail('username@domain.com', '', 'Testing');
//mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
仅在一台服务器上成功发送和接收:
mail('5556667777@txt.provider.net', '', 'Testing');
//mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
【问题讨论】:
-
php 不发送邮件。
mail()只使用安装的任何本地 MTA(例如 sendmail、postfix、exim、...)。 mail() 相当于把你的信走到街角,然后把信封扔进邮箱。 -
@MarcB 非常感谢!好的...所以可以发送 txt 消息的服务器正在运行 xinetd,而不能发送 txt 消息的服务器正在运行 postfix。有什么想法吗?
-
对不起...不是 xinetd...我的意思是 ESMTP
-
esmtp 是一种协议。检查后缀日志以查看 php 移交后电子邮件发生了什么。
-
您可能想查看 PEAR Mail。更好地处理邮件消息。此外,
220 mail.domain.com ESMTP是一个成功的响应横幅。因此,请按照@MarcB 的建议检查 Relay MTA 上的日志。