Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP不发送出站邮件_Php_Sendmail - Fatal编程技术网

PHP不发送出站邮件

PHP不发送出站邮件,php,sendmail,Php,Sendmail,我正在使用sendmail包和php,当我尝试在php中使用mail函数时,它返回true,但没有发送任何内容 php配置 ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ; http://php.net/sendmail-path sendmail_path =/usr/sbin/sendmail -t -i php文件 error_reporting(E_ALL|E_STRICT

我正在使用sendmail包和php,当我尝试在php中使用mail函数时,它返回true,但没有发送任何内容

php配置

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path =/usr/sbin/sendmail -t -i
php文件

error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 1);
trace(mail('jamie@domain.tld','Testing','test.'));
邮件程序日志正在显示此信息

mail() on [/var/www/misc/mail.php:5]: To: jamie@domain.tld -- Headers: 
通过CLI运行sendmail,如下所示:

echo -e "To: jamie@domain.tld\nSubject: Test\nTest\n" | sendmail -bm -t -v
返回“发件人确定”、“收件人确定”


有人知道任何可能导致php不发送电子邮件的事情吗?

php与邮件传递无关。它的作业以将电子邮件发送到指定的SMTP代理/服务器开始和结束。如果
mail()
没有返回布尔值FALSE,那么PHP的作业成功了,它就出局了

检查SMTP服务器的日志,查看在完成切换后电子邮件发生了什么变化。很有可能邮件被拒绝/greylisted/spamfilter而被遗忘,因为PHP的
mail()

考虑切换到或,两者都提供了比mail()更好的PHPSMTP交互诊断


从命令行手动测试没有什么意义:您的shell环境与您的脚本可能在-apples and oranges中执行的web服务器环境非常不同。

PHP与邮件传递无关。它的作业以将电子邮件发送到指定的SMTP代理/服务器开始和结束。如果
mail()
没有返回布尔值FALSE,那么PHP的作业成功了,它就出局了

检查SMTP服务器的日志,查看在完成切换后电子邮件发生了什么变化。很有可能邮件被拒绝/greylisted/spamfilter而被遗忘,因为PHP的
mail()

考虑切换到或,两者都提供了比mail()更好的PHPSMTP交互诊断


从命令行手动测试没有什么意义:您的shell环境与您的脚本可能在-apples和oranges中执行的web服务器环境非常不同。

这可能会产生误导。PHP将返回true,因为就其而言,它已经完成了自己的部分。但它不能保证SMTP服务器会接受该请求

当这件事发生在我身上时,我的主机执行了一项新的规定,即所有脚本邮件的标题中必须包含“发件人”地址,该地址必须是与主机帐户关联的有效地址


可能值得调查这种可能性。

这可能会产生误导。PHP将返回true,因为就其而言,它已经完成了自己的部分。但它不能保证SMTP服务器会接受该请求

当这件事发生在我身上时,我的主机执行了一项新的规定,即所有脚本邮件的标题中必须包含“发件人”地址,该地址必须是与主机帐户关联的有效地址


可能值得研究这种可能性。

我在这里重复这样的评论,即对于您无法控制和理解如何配置整个服务器环境的任何应用程序来说,依赖mail()确实是一个坏主意。我更喜欢使用SendGrid、AmazonSES(不适用于营销电子邮件)或类似的服务,您只需通过API调用发送邮件。如果您只是在测试环境中发送小容量电子邮件,那么这些服务中的许多都有一个免费的层,您可以在上面操作。我在这里重复这样的评论,即对于您不控制和不了解如何配置整个服务器环境的任何应用程序来说,依赖mail()确实是一个坏主意。我更喜欢使用SendGrid、AmazonSES(不适用于营销电子邮件)或类似的服务,您只需通过API调用发送邮件。如果您只是在测试环境中发送小容量电子邮件,那么这些服务中的许多都有一个免费层,您可以使用它进行操作。