如果从终端调用php mail()不工作

时间:2013-11-23 20:13:34

标签: sendmail php

我正在尝试制作一些小通讯。要发送电子邮件,我想用shell_exec()调用发件人脚本。

<?php
$mail = new mail();
$mail->set('to', $to);
$mail->set('message', $content);
$mail->set('subject', 'Newsletter');
$mail->send();
?>

mail()对象是一个发送电子邮件的简单类,并在 - &gt; send()方法中调用php mail()函数。在发送之前添加标题。

如果我在浏览器的pageload上调用此脚本,它可以正常工作。但是:

php send_mail.php

什么都没发生。 mail()函数返回true,如果我在发送之前输出这些参数,则所有参数都会正确设置。

我还检查了/ var / log / mail *但没有产生错误。

我尝试通过相对和绝对路径调用脚本。两者都不起作用。

我现在卡住了因为mail()函数只有在从终端调用时才起作用,否则一切似乎都没问题。

我使用sendmail发送电子邮件。

我该如何解决这个问题?

谢谢:)

3 个答案:

答案 0 :(得分:1)

从命令行使用PHP时,它通常可以使用不同的php.ini文件。这个CLI php.ini文件很可能没有配置你的邮件设置。

使用命令行中的php -i找出PHP正在使用哪个ini文件,然后检查该文件中的邮件设置,特别是与普通的apache php.ini文件进行比较(可以通过粘贴找到)脚本中的<?php phpinfo() ?>并将其加载到浏览器中。

答案 1 :(得分:1)

我认为,cli模式缺少一些配置。 比较从cli和webserver加载的php.ini

ini_set ( "SMTP", "smtp-server.example.com" );
date_default_timezone_set('America/New_York');

也可以提供帮助

答案 2 :(得分:0)

检查PHP邮件配置:

  1. 打开你的php.ini文件(如果你不知道它在哪里,见下文)
  2. 搜索读取[邮件功能]
  3. 的行
  4. 添加/更改邮件服务器的详细信息。这可以是本地邮件服务器或ISP的邮件服务器。
  5. 保存/关闭php.ini文件
  6. 重新启动您的网络服务器
  7. [mail function];

    For Win32 only.

    SMTP = localhost

    smtp_port = 25

    For Win32 only.

    sendmail_from = me@example.com

    For Unix only. You may supply arguments as well (default: "sendmail -t -i").

    sendmail_path =