我正在尝试制作一些小通讯。要发送电子邮件,我想用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发送电子邮件。
我该如何解决这个问题?
谢谢:)
答案 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邮件配置:
[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 =