-6

MYSqL works fine but I do not get emails why?

<?php
    //include the connection file

    require_once('connection.php');

    //save the data on the DB and send the email

        if(isset($_POST['action']) && $_POST['action'] == 'submitform')
        {
        //recieve the variables

        $name = $_POST['name'];
        $email = $_POST['email'];
        $url = $_POST['url'];
        $comment = $_POST['comment'];
        $ip = gethostbyname($_SERVER['REMOTE_ADDR']);

        //save the data on the DB

        mysql_select_db($database_connection, $connection);

        $insert_query = sprintf("INSERT INTO contacts (name, email, url, comment, date, ip) VALUES (%s, %s, %s, %s, NOW(), %s)",
                            sanitize($name, "text"),
                            sanitize($email, "text"),
                            sanitize($url, "text"),
                            sanitize($comment, "text"),
                            sanitize($ip, "text"));

        $result = mysql_query($insert_query, $connection) or die(mysql_error());

        if($result)
        {
            //send the email

            $to = "email@aol.com";
            $subject = "message from website";

            //headers and subject
            $headers  = "MIME-Version: 1.0\r\n";
            $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
            $headers .= "From: ".$name." <".$email.">\r\n";

            $body = "New contact<br />";
            $body .= "Name: ".$name."<br />";
            $body .= "Email: ".$email."<br />";
            $body .= "Comment: ".$comment."<br />";
            $body .= "IP: ".$ip."<br />";

            mail($to, $subject, $body, $headers);

            //ok message

            echo "Your message has been sent";
        }
        }

        function sanitize($value, $type) 
        {
        $value = (!get_magic_quotes_gpc()) ? addslashes($value) : $value;

        switch ($type) {
        case "text":
          $value = ($value != "") ? "'" . $value . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $value = ($value != "") ? intval($value) : "NULL";
          break;
        case "double":
          $value = ($value != "") ? "'" . doubleval($value) . "'" : "NULL";
          break;
        case "date":
          $value = ($value != "") ? "'" . $value . "'" : "NULL";
          break;
        }

        return $value;
    }
?>
4

1 回答 1

5

当电子邮件突然停止时,从服务器发送电子邮件可能会很棘手。如果发生故障,您肯定希望实现某种日志记录。关于您的特定问题,这可能是各种各样的事情。MySQL是无关的mail(),因此一个工作对另一个工作没有直接影响,除非您有代码指示这种交互。这是一个相当技术性的解释。

  1. 您最初发布的电子邮件地址是aol.com. 如果是这种情况,那么您需要查看AOL 发件人政策。他们可能正在执行反向查找,但在DNS的MX 记录反向查找中找不到您的服务器名称。此外,他们喜欢SPF 记录DKIMDomain-Keys 之类的东西。
  2. 如果您的网络服务器的IP 地址或您的网络主机注册的 IP 块在阻止列表中(共享主机往往有多个网站发送电子邮件),您将不会收到电子邮件。有几个网站可让您检查您$_SERVER['SERVER_ADDR']是否在阻止列表中。例如,您可以尝试:http ://whatismyipaddress.com/blacklist-check
  3. 由于您正在向 AOL 发送邮件,因此您正试图发送一封以不带 HTML 标记开头的仅 MIME HTML 电子邮件。(您可以尝试纯文本。)
  4. 此外,由于您正在向 AOL 发送电子邮件(发送到您自己的地址),因此您很可能使用自己的地址进行测试,如果是这种情况,AOL 倾向于阻止从他们的电子邮件发送给他们的电子邮件- 邮件域,但不是由他们发送的。这可能看起来像是中继或欺骗尝试。
  5. 如果您在本地网络上,大多数 ISP 通常会阻止端口 25,以防止蠕虫和病毒从托管在其网络上的受感染计算机传播。
  6. 如果您的 sendmail 客户端未在 PHP 安装中安装或配置,则可能是这种情况。检查phpinfo()它是否已安装。
  7. 您的服务器可能正在运行像 IP Tables 这样的防火墙,它可能阻止来自端口 25 的出站广播。(不太可能,但可能。)
  8. 如果Sendmail配置正确,您可以通过指定用于记录所有mail()事务的日志来更新配置文件。这将告诉您电子邮件是否被退回以及服务器之间握手期间的任何响应。
于 2013-04-28T04:30:08.387 回答