Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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中使用mail()不会出现错误_Php_Email - Fatal编程技术网

在PHP中使用mail()不会出现错误

在PHP中使用mail()不会出现错误,php,email,Php,Email,当我在PHP中错误地使用mail()函数时,我没有得到一个错误作为返回值: ini_set("display_errors", "1"); error_reporting(E_ALL); if(mail(1,2,3)) echo 'true'; else echo 'false'; 上面没有PHP错误,回音为true 因此,似乎接受了参数明显错误的“邮件”:(php.net) 只有当我把第三行改为 if(mail(1,2)) 我得到一个PHP警告,并打印字符串false 上述两种情况

当我在PHP中错误地使用
mail()
函数时,我没有得到一个错误作为返回值:

ini_set("display_errors", "1");
error_reporting(E_ALL);
if(mail(1,2,3))
  echo 'true';
else
  echo 'false';
上面没有PHP错误,回音为
true

因此,似乎接受了参数明显错误的“邮件”:(php.net)

只有当我把第三行改为

if(mail(1,2))
我得到一个PHP警告,并打印字符串
false

上述两种情况在根本没有安装邮件服务器的服务器或邮件服务器工作正常的服务器上都有相同的结果。是“按设计工作”,还是我误用/误解了mail()函数的返回值


如果是“按设计工作”是否有更深层的原因来检查返回值?

甚至不知道您在问什么:

bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
最少3个参数

如果邮件已成功接受传递,则返回TRUE,否则返回FALSE


甚至不知道你在问什么:

bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
最少3个参数

如果邮件已成功接受传递,则返回TRUE,否则返回FALSE

@Woox mail()函数允许您从php网站发送邮件(即使您没有邮件服务器)

这里对一切都有很好的解释: www.w3schools.com/php/func_mail_mail.asp

@Woox mail()函数允许您从php网站发送邮件(即使您没有邮件服务器)

这里对一切都有很好的解释:
www.w3schools.com/php/func_-mail_-mail.asp

mail()
如果服务器已接受邮件进行传递,则返回true。这并不意味着要发送的电子邮件是有效的或永远不会被发送。这只是字面上的意思,服务器已经接受了邮件的传递。这就是为什么您每天都会看到关于
mail()
如何不工作的问题,因为它返回
true
但从未收到邮件。
true
值并不意味着交付或任何内容都是有效的。这只意味着服务器接受了发送电子邮件的请求。

mail()
如果服务器已接受邮件进行传递,则返回true。这并不意味着要发送的电子邮件是有效的或永远不会被发送。这只是字面上的意思,服务器已经接受了邮件的传递。这就是为什么您每天都会看到关于
mail()
如何不工作的问题,因为它返回
true
但从未收到邮件。
true
值并不意味着交付或任何内容都是有效的。这仅仅意味着服务器接受了发送电子邮件的请求。

对@johncode的回答做了一些额外的解释,因为他们解释了如何发送,而不是为什么

mail()
对给定的参数不作任何假设

邮件(1,2,3)
将传递
1
的电子邮件地址、
2
的主题和
3
的消息。显然,电子邮件地址是无效的,但是
mail()
并不重要,这是邮件服务器要处理的


邮件(1,2)
缺少邮件。邮件服务器将不接受这一点。

对@johncode的答案进行额外的解释,因为他们解释了方法,但没有解释原因

mail()
对给定的参数不作任何假设

邮件(1,2,3)
将传递
1
的电子邮件地址、
2
的主题和
3
的消息。显然,电子邮件地址是无效的,但是
mail()
并不重要,这是邮件服务器要处理的


邮件(1,2)
缺少邮件。邮件服务器不会接受这个问题。

甚至不知道你在问什么,如果你不知道问题是什么,你怎么回答这个问题?是的,到目前为止这很清楚。。。但是php.net的描述也说(例如,对于param$to:“此字符串的格式必须符合RFC 2822。”这在我的示例请求中显然失败了。因此,如果我的示例请求被接受,即使它确实是错误的,那么检查mail()的返回值是否有意义-函数?@Rizier123不清楚他/她具体在寻找什么,只是他/她找到了答案的一般性问题。不知道你在问什么,那么如果你不知道问题是什么,你怎么回答这个问题?是的,到目前为止这很清楚……但php.net的描述也说(例如,对于param$to:“此字符串的格式必须符合RFC 2822。”这在我的示例请求中显然失败。因此,如果我的示例请求被接受,即使它确实是错误的-是否存在检查邮件()的返回值有意义的情况-功能?@Rizier123不清楚他/她具体在寻找什么,只是他/她已经找到答案的一般性问题“真正的价值并不意味着交付,甚至任何东西都是有效的。“因此,如果我的示例请求被接受,即使它确实是错误的-是否存在检查邮件()的返回值有意义的情况?”-函数?@Wooz用于确定邮件服务器是否接受邮件。如果它接受邮件请求,并且您事先正确验证了字段,则可以安全地假设它实际上会发送。失败表示您的参数或邮件服务器本身有问题。是的,但主要是在收到错误值时。在这种情况下,您知道将电子邮件发送到服务器时出错,并且知道要解决的问题。true的响应对调试没有多大帮助,因为仍有许多潜在的故障点需要调查。但至少它消除了一个潜在原因。因此返回值主要用于检查php和mailserver之间的一般通信工作正常???(此外,如果参数太少,则会出现故障…),这就是总结