设置“msmtp”时,msmtp无法使用php发送电子邮件;从「;

设置“msmtp”时,msmtp无法使用php发送电子邮件;从「;,php,msmtp,Php,Msmtp,我制作了一个小的测试php脚本,它发送一封电子邮件,如下所示: $headers = 'From: ' . $_POST["from"]; if (mail ($_POST["to"], $_POST["subject"], $_POST["body"], $headers)) { echo "Mail sent"; } else { echo "Problem sending email"; } 这在带有后缀的服务器上运行良好 尝试使用msmtp时,它会忽略发件人并抱怨: msmtp

我制作了一个小的测试php脚本,它发送一封电子邮件,如下所示:

$headers = 'From: ' . $_POST["from"];
if (mail ($_POST["to"], $_POST["subject"], $_POST["body"], $headers)) {
  echo "Mail sent";
} else {
  echo "Problem sending email";
}
这在带有后缀的服务器上运行良好

尝试使用msmtp时,它会忽略发件人并抱怨:

msmtp:etc/MSMTPC中的帐户默认值:缺少地址中的信封

配置文件的内容是:

# cat /etc/msmtprc

account default
host localhost
port 25
我试着在那个文件中设置一个from,它成功了,但覆盖了我在php中传递的from

谢谢你的帮助,我找到了

这里的文件说明:

在php.ini中查找sendmail_path选项,并按如下方式编辑:

$headers = 'From: ' . $_POST["from"];
if (mail ($_POST["to"], $_POST["subject"], $_POST["body"], $headers)) {
  echo "Mail sent";
} else {
  echo "Problem sending email";
}
这当然不起作用。在查看了可能的参数后,我发现了一个有效的参数:

sendmail_path = "/usr/bin/msmtp -C /etc/msmtprc -t --read-envelope-from"

干杯

事实上,如果您也安装了msmtp mta,sendmail将立即运行,并且我在我的邮件呼叫()中指定发件人地址时没有问题。我甚至不需要修改php.ini。我使用的是PHP7.4。