2

我有一个表单,用户输入消息,消息被发送到另一端的收件人。我已经多次尝试这个脚本,浏览了教程,但我似乎无法找到问题所在。有任何想法吗?

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;
}

谢谢!

4

3 回答 3

3

(道歉,因为这应该作为评论,但它会更容易在文本框中布局)

首先,使用以下代码进行调试:

<?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 注入)开放。我强烈建议您使用其中一个可用的函数/类来帮助您消除邮件脚本中的安全漏洞。

如果您决定自己动手,那就太好了,但是在将此脚本放在服务器上之前,请先阅读有关电子邮件垃圾邮件标头注入的信息。当垃圾邮件发送者发现这样的开放脚本时,他们可以非常迅速地发送数千封电子邮件,他们会定期自动测试,因此您必须加以制止。

(并阅读有关 PHP 数据库对象 - PDO - 同时保存 MySQL 注入。)

于 2012-07-30T06:29:55.220 回答
0
  1. 您的服务提供商可能会阻止您的邮件。

  2. 如果您在专用服务器中,您可能需要配置邮件服务器

谢谢

斯雷拉杰

于 2012-07-30T05:59:49.067 回答
0

使用此方法这是一个php不需要任何smpt连接的电子邮件脚本

<?php
$to = "someone@example.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "someonelse@example.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?> 
于 2012-07-30T07:32:12.123 回答