Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.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

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
在Linux上对SMTP服务器使用默认的PHP邮件功能_Php_Email_Smtp_Sendmail - Fatal编程技术网

在Linux上对SMTP服务器使用默认的PHP邮件功能

在Linux上对SMTP服务器使用默认的PHP邮件功能,php,email,smtp,sendmail,Php,Email,Smtp,Sendmail,我正在从事一个php/c#项目,这是一个带有web界面的电子邮件服务器,用于管理电子邮件服务器应用程序 这个程序应该可以在windows和linux上运行,但我主要是在windows上进行开发 我还没有开始在Linux中进行测试,但发现了一个可怕的问题 根据我在Windows PHP上搜索的内容,您可以选择要使用的SMTP服务器,但在Linux上似乎没有此选项,因此当PHP发送电子邮件时,它会完全绕过我的程序 有没有办法让PHP使用您选择的SMTP服务器,我知道您可以使用PEAR来覆盖SMTP设

我正在从事一个php/c#项目,这是一个带有web界面的电子邮件服务器,用于管理电子邮件服务器应用程序

这个程序应该可以在windows和linux上运行,但我主要是在windows上进行开发

我还没有开始在Linux中进行测试,但发现了一个可怕的问题

根据我在Windows PHP上搜索的内容,您可以选择要使用的SMTP服务器,但在Linux上似乎没有此选项,因此当PHP发送电子邮件时,它会完全绕过我的程序

有没有办法让PHP使用您选择的SMTP服务器,我知道您可以使用PEAR来覆盖SMTP设置,但我更希望标准的PHP邮件功能可以工作,这样其他软件(如PHPBB forum)可以通过我的SMTP服务器而不是默认的PHP邮件发送电子邮件


这是可能的还是我使用pear的唯一选项?

您的标准php邮件函数将只发送到php.ini中定义为sendmail\u路径的任何对象

这通常是
sendmail-t-i

您需要将sendmail配置为使用smtp

FWIW,大多数从PHP应用程序发送大量邮件的开发人员都痛斥mail(),而是使用许多邮件库(或服务)中的一个,它们提供了更好的可配置性/可靠性


例如,您可以将mail函数通过管道传输到自己的PHP脚本中,并在该脚本中使用您想要的任何库来进行邮件发送(从而在应用程序之间保留mail()函数的使用)。

在非Windows系统上,不可能让
mail()
函数使用SMTP服务器

请参阅
php.ini
设置中的文档

已成为广泛使用的用于发送电子邮件的PHP库。它支持多种选项,包括SMTP和各种身份验证类型以及SSL/TLS。如果您需要使用SMTP发送邮件,我建议您使用它(或类似的东西,请参阅)


因此,您将无法使用邮件功能,但您唯一的其他选项不是Pear。

将sendmail配置为使用smtp?正如@Maerlyn所写:为什么不将sendmail配置为使用smtp?谁会在乎是php.ini还是sendmail配置写在哪里?您的应用程序仍在使用
mail()
。根据我在谷歌上搜索的内容,您不能仅在windows上使用linux的ini文件中的外部smtp服务器。我什么也找不到anyway@Boardy:在现有的Linux软件上,sendmail二进制文件会处理这个问题。Sendmail也可以将其推送到smtp服务器,比如直接在windows上运行PHP。您误读了文档。请参阅sendmail_path@cghislai Care的文档以解释如何操作?只需指定sendmail路径。当我在docker容器中运行它时,我将它指向ssmtp二进制文件。PHP mail()函数的作用就像一个符咒,将邮件转发到postfix SMTP服务器。