从PHP发送HTML电子邮件

-5 php forms email sendmail html-email

MYSqL工作正常,但我没有收到电子邮件的原因?

<?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;
    }
?>
Run Code Online (Sandbox Code Playgroud)

Abs*_*ERØ 5

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

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