我有一个表单,用户输入消息,消息被发送到另一端的收件人。我已经多次尝试这个脚本,浏览了教程,但我似乎无法找到问题所在。有任何想法吗?
HTML 表单:
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
<?php
if(isset($sent))
echo 'Your message has been sent. '; ?>
<label for="Name">Name</label><br />
<input type="text" class="textbox" size="35" id="Name" name="Name" <?php if(isset($name)) echo "value=\"$name\"";?> /><br />
<label for="Service">Service</label><br />
<input type="text" size="35" class="textbox" id="Service" name="Service" <?php if(isset($subject)) echo"value=\"$subject\"";?> /><br />
<label for="Email">Email</label><br />
<input type="text" size="35" class="textbox" id="Email" name="Email" <?php if(isset($from)) echo"value=\"$from\""; ?> /><br />
<label for="message">Message</label><br />
<textarea rows="95" cols="100" id="message" name="message"><?php if(isset($message)) echo"$message"; ?></textarea><br />
<button type="submit">Send Message</button>
</form>
PHP:
if(isset($_POST['Name']) && isset($_POST['Email']) && isset($_POST['Service']) && isset($_POST['message'])) {
$name = $_POST['Name'];
$from = $_POST['Email'];
$subject = $_POST['Service'];
$to = "emailtestertora@gmail.com";
$message = $_POST['message'];
mysql_query("INSERT INTO `Contact`(`Name`, `Email`, `Message`, `Service`) VALUES('$name', '$from', '$message', '$subject')");
$headers = "From:".$from;
if(mail($to,$subject,$message,$headers))
$msgsent = true;
}
谢谢!
最佳答案
(道歉,因为这应该作为评论,但它会更容易在文本框中布局)
首先,使用以下代码进行调试:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'on');
if (mail('emailtestertora@gmail.com', 'test', 'test')) {
echo 'Mail Sent';
} else {
echo 'Mail Failed';
}
?>
此脚本将在发送电子邮件时为您提供有助于调试的错误消息。
但是,此评论的重要部分是上面的电子邮件脚本对垃圾邮件(以及 SQL 注入(inject))开放。我会强烈鼓励您可以使用其中一个可用的函数/类来帮助您消除邮件脚本中的安全漏洞。
如果您决定自己动手,那就太好了,但是在将此脚本放在服务器上之前,请先阅读有关电子邮件垃圾邮件 header 注入(inject)的信息。当垃圾邮件发送者发现这样的开放脚本时,他们可以非常迅速地发送数千封电子邮件,他们会定期自动测试,因此您必须加以制止。
(并阅读有关 PHP 数据库对象 - PDO - 同时保存 MySQL 注入(inject)。)
关于php - 无法通过php发送邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11716054/