【发布时间】:2014-02-20 01:01:03
【问题描述】:
这是导致问题的 PHP 和 HTML 代码;当我按下 提交 <input> 时,电子邮件没有发送:
<head>
<title>`Fraud Detector`</title>
<link rel="stylesheet" type="text/css" href="CSS.css"/>
<LINK REL="SHORTCUT ICON" HREF="favicon.ico">
<body>
<form method="post" name="form1" action="submit.php">
Name:
<br/><input type="text" name="name" /><br/>
Email:
<br/><input type="text" name="email"/><br/><br/>
<input type="submit" value="Continue"/>
</form>
<?php
$email = $_POST["email"];
$subject = "Your Account May Have Been Hacked!";
$body = "Your account may have been hacked!
Please click the following link to fix the problem:
http://testsites.webatu.com/process.php";
$from = "fraud_dept@security_inc.com";
mail($email, $subject, $body, $from);
?>
</body>
</head>
谁能告诉我为什么没有发送电子邮件以及我做错了什么?
【问题讨论】:
-
因为缺少
From:和缺少\r\n等 -Read the manual -
将
error_reporting(-1);放在脚本顶部并修复通知和您可能遇到的任何其他错误。 -
@Fred-ii- 稍微跑题了,但有人告诉我 Postfix(如果这是用来发送邮件的)处理线路终结符本身,并且实际上期望 EOL 与它的操作系统相关继续运行,所以你真的应该提供
PHP_EOL作为行终止符而不是\r\n- 尽管你的标题应该总是以\r\n终止......你知道吗? -
遇到此类问题时,我总是参考手册。我可以基于 PHP.net 的内容,然后在之后添加好东西。
PHP_EOL有效,引用自其中一项(-1 我不知道为什么)“由于 $additional_headers 中的行在 Unix 上必须用 \n 分隔,在 Windows 上用 \r\n 分隔,因此可能是在任一平台上使用包含正确值的 PHP_EOL 常量很有用。”php.net/mail@CD001 - 有些人经常滥用标题。 -
@Fred-ii-郁郁葱葱,干杯 :) 我只是在 Postfix 网站上,一辈子都看不到它(应该检查 php.net)......但后来凌晨 1 点 25 分,我真的应该睡着了!
标签: php html forms email variables