【问题标题】:mail() function will not recognize message variables in php cronjobmail() 函数将无法识别 php cronjob 中的消息变量
【发布时间】:2016-05-11 21:25:58
【问题描述】:

我有一个名为“basic.txt”的文本文件,其中包含以下文本

这个
是一个
测试文件。

我的 cronjob 每分钟运行一次我的 php 程序并给我发一封电子邮件。我收到电子邮件没问题,但它不包括正文。这是我的php代码:

<?php
    $string = "";
    $file = fopen("basic.txt", "r");
    $string .= file_get_contents("basic.txt");
    $fclose($file);
    echo $string; // this is to test that in fact $string contains the text and it does
    mail("example@hotmail.com", "TEST", $string, "From: example@hotmail.com");
?>

即使我可以使用“echo $string”并且它工作正常,为什么 $string 不将文本文件中的文本发送到电子邮件正文?

谢谢

【问题讨论】:

  • 您可以在发送邮件后尝试$string .= file_get_contents($file); 和/或输入您的$fclose($file);。似乎您可能过早关闭文件。检查文件权限。
  • $string .= file_get_contents($file);不起作用,它说我需要在那里有文件名。 $fclose($文件);在邮件功能之后也不起作用。
  • file_get_contents() 不需要fopen(),因此也不需要fclose()
  • 你是说邮件没有被发送?或者当你收到邮件时它不包含basic.txt的内容
  • 邮件正在发送,我收到了主题标题,而不是输入为 $string 的正文

标签: php email cron crontab


【解决方案1】:

去掉这两行:

 $file = fopen("basic.txt", "r");
 $fclose($file);

因为您已经在使用 file_get_contents() 来获取文件的内容。

从我的服务器运行你的代码产生:

致命错误:函数名称必须是第 5 行 /path/to/file.php 中的字符串

你的代码在你身上失败了默默地


因此,在 OP 的情况下,根据 cmets 中的建议,文本文件需要完整的系统路径,并且必须设置新的 cron 作业。

【讨论】:

  • 我已经这样做了,但它仍然没有发送给我。我在上面留下了评论,解释了发生的事情
  • @Michael 是的,我看到了,并回复了评论。您是否遗漏了任何内容/代码,或者是“它”?如果您有权访问,请检查您的日志
  • @Michael 另一件事;这两个文件是否与您正在执行的文件位于同一文件夹中?如果不是,那么您将需要为您的文本文件使用完整的系统路径,或者以任何一种方式使用完整的系统路径。我很确定这与此有关。即:/var/user/public/folder/basic.txt
  • 我设置了一个新的 crontab 并添加了整个路径,它可以工作了!非常感谢!
  • @Michael Aaaahhhh,太棒了 Michael,很高兴听到它成功了 :-) 干杯! 不客气。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多