php发送邮件表单不适用于同一域上的电子邮件 [英] php send mail form not working with emails on same domain

查看:92
本文介绍了php发送邮件表单不适用于同一域上的电子邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试向网站添加联系表单,该表单会将表单数据发布到电子邮件地址.它可以与Gmail和Yahoo等其他任何电子邮件注册者一起正常工作.但不适用于具有相同域名(例如:info@domain.com或support@domain.com)的电子邮件.

I am trying to add a contact form to a website which posts the form data to an email address. It works fine with any other email registrants like Gmail and Yahoo. but it doesn't work with emails with same domain name (e.g.: info@domain.com or support@domain.com).

同样的形式在Godaddy豪华主机上也可以正常工作,但是现在我转到了Godaddy CPanel Linux主机豪华计划上,它不起作用.

The same form was working fine with godaddy deluxe hosting but now that I have shifted to Godaddy CPanel linux hosting deluxe plan, it doesn't work.

请仔细阅读下面使用的代码,并告诉我必须更改的内容.非常感谢您的建议.预先感谢.

Please go through the following code I am using and let me know what has to be changed. Your suggestions are greatly appreciated. Thanks in advance.

代码:

    <?php
if(isset($_POST['email'])) {


    $email_to = "info@domain.com";
    $email_subject = "Enquiry website";


    function died($error) {
        // your error code can go here
        echo "We are very sorry, but there were error(s) found with the form you submitted. ";
        echo "These errors appear below.<br /><br />";
        echo $error."<br /><br />";
        echo "Please go back and fix these errors.<br /><br />";
        die();
    }

    // validation expected data exists
    if(!isset($_POST['author']) ||
        !isset($_POST['email']) ||
        !isset($_POST['subject']) ||    
        !isset($_POST['text'])) {
        died('We are sorry, but there appears to be a problem with the form you submitted.');       
    }

    $author = $_POST['author']; // required

    $email_from = $_POST['email']; // required
    $subject = $_POST['subject']; // required
    $text = $_POST['text']; // required

    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
  if(!preg_match($email_exp,$email_from)) {
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
  }
    $string_exp = "/^[A-Za-z .'-]+$/";
  if(!preg_match($string_exp,$author)) {
    $error_message .= 'The Name you entered does not appear to be valid.<br />';

  }
  if(strlen($text) < 2) {
    $error_message .= 'The text you entered do not appear to be valid.<br />';
  }
  if(strlen($error_message) > 0) {
    died($error_message);
  }
    $email_message = "Form details below.\n\n";

    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }

    $email_message .= "Name:".clean_string($author)."\n";

    $email_message .= "Email:".clean_string($email_from)."\n";
   $email_message .= "Subject:".clean_string($subject)."\n";
    $email_message .= "Message:".clean_string($text)."\n";


// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);  
?>

<!-- include your own success html here -->



<?php
  echo "<script type='text/javascript'>alert('$us Thank you for contacting us. We will get back to you very soon.')</script>";
echo "<script type='text/javascript'>window.location='index.html'</script>";
}
?>

推荐答案

自从发布后不确定是否添加了此代码,但是您实际上可以在cPanel中自行设置.

Not sure if this was added since this post, but you can actually set this yourself in cPanel.

  1. 单击电子邮件下的MX Entry图标.
  2. 从具有表单的下拉列表中选择域.
  3. 选择远程电子邮件交换器
  4. 改变.

这篇关于php发送邮件表单不适用于同一域上的电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆