我可以使用 PHP 从 shell 发送邮件,但无法从 PHP 网页发送

我可以使用 PHP 从 shell 发送邮件,但无法从 PHP 网页发送

我正在尝试从我的服务器页面上的联系表单发送邮件。

我关注了邮政

我的 PHP 文件 /var/www/my_project/test.php 是这样的:

<?php
$myemail = "[email protected]";
$subject = "my subject";
$message = "my message ";
mail($myemail, $subject, $message);
echo "sent";
?>

如果我从 shell 运行 PHP 文件:

php /var/www/my_project/test.php

我在 Gmail 中收到了这封电子邮件,然后我假设邮件传输协议配置得很好,对吧?

但如果我从浏览器运行 PHP:

http://localhost/my_project/test.php

它不会发送邮件,而是创建包含电子邮件内容的文件:

/var/www/dead.letter

我也执行了以下步骤:

costales@server:~$ sudo cat /etc/php5/apache2/php.ini | grep sendmail
sendmail_path = /usr/sbin/sendmail -t
costales@server:~$ sudo service apache2 reload

costales@server:~$ telnet smtp.gmail.com 587
Trying 173.194.67.109...
Connected to gmail-smtp-msa.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP dm2sm7052263wib.8 - gsmtp

有什么想法吗?提前谢谢!

答案1

是 Drupal 吗?那么你可以看看这篇文章:https://drupal.org/comment/2032080#comment-2032080

这可能与用户权限有关。尝试将 apache 用户添加到/etc/mail/virtusertable并重新哈希/etc/mail/virtusertable.db

Sendmail 需要进行配置才能与 httpd 服务器用户一起工作。

相关内容