我尝试在网站 http://www.compileonline.com/execute_php_online.php 上在线运行代码 但我不断收到错误PHP mail()返回'sh:-t:command not found'。 我真的想要一个好的Soln。 这是我的代码: -
<?php
$to='vbahulkar@gmail.com';
$subject='Birthday Reminders';
$message='
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>B'day</title>
</head>
<body>
<p>Here are the birthdays upcoming in August!</p>
<table>
<tr>
<th>Person</th><th>Day</th><th>Month</th><th>Year</th>
</tr>
<tr>
<td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
</tr>
<tr>
<td>Sally</td><td>17th</td><td>August</td><td>1973</td>
</tr>
</table>
</body>
</html>
';
$headers = 'MIME-Version: 1.0'."\r\n";
$headers = 'Content-type: text/html; charset=iso-8859-1'. "\r\n";
$headers .= 'From: Birthday Reminder<bbahulkar@gmail.com>'."\r\n";
mail($to,$subject,$message,$headers);
?>
答案 0 :(得分:2)
虽然OP的解决方案需要转义单引号,但这个错误信息对我来说意味着别的。
我使用的是Docker容器,基本映像没有安装sendmail。这意味着当PHP推断出sendmail命令将是&#34; -t -i&#34;,结果将是&#34; -t -i&#34;,它将解释上面的错误消息。
就我而言,解决方案是安装sendmail。在我的基于Debian的图像中,我跑了:
apt-get install -y sendmail
可能需要 sudo
,具体取决于您运行的用户apt-get
。
您希望通过PHP测试sendmail,以确保它按预期工作。我发现this link有我需要的东西。
答案 1 :(得分:1)
将B'd
修复为B\'d
和
您忘了包含一个标题。将=
修改为.=
$headers .= 'Content-type: text/html; charset=iso-8859-1'. "\r\n";
答案 2 :(得分:0)
打开php.ini文件并检查sendmail_path行
private static void printClass(String text, final Class<? extends Person> klazz) {
System.out.printf("%s: %s%s", text, klazz, "\n");
}
但是,如果将PHP升级到最新的稳定版5或7
,则会自动解决该问题