PHP 联系表单布局不允许在电子邮件中换行


PHP contact form layout not allowing new line in email

我有一个包含此代码的联系表格

$message = "Telephone Number: $telephone"."'n"."Job Details: $message"."'n"."Number of Pages Required: $pages"."'n"."Clients Budget: $budget";

但是我无法像应该的那样在电子邮件中创建新行。我不知道我可能需要什么其他代码。谢谢。

特布·阿伦

<?php
// Clean up the input values
foreach($_POST as $key => $value) {
if(ini_get('magic_quotes_gpc'))
$_POST[$key] = stripslashes($_POST[$key]);
$_POST[$key] = htmlspecialchars(strip_tags($_POST[$key]));
}
mb_convert_encoding($string, "UTF-8"); //AUTO DETECT AND CONVERT
mb_convert_encoding($string, "UTF-8", "latin1");
// Assign the input values to variables for easy reference
$name = $_POST["name"]; 
$email = $_POST["email"];
$telephone = $_POST["telephone"];
$pages = $_POST["pages"];
$budget = $_POST["budget"];
$message = $_POST["message"];
  // Test input values for errors
$errors = array();
if(strlen($name) < 2) {
if(!$name) {
$errors[] = "You must enter a name.";
} else {
$errors[] = "Name must be at least 2 characters.";
}
}
if(!$email) {
$errors[] = "You must enter an email.";
} else if(!validEmail($email)) {
$errors[] = "You must enter a valid email.";
}
if(strlen($telephone) < 6) {
if(!$telephone) {
$errors[] = "You must enter a phone number.";
} else {
$errors[] = "Message must be at least 6 characters. (include area code)";
}
}
if(strlen($message) < 10) {
if(!$message) {
$errors[] = "You must enter a message.";
} else {
$errors[] = "Message must be at least 10 characters.";
}
}
if($errors) {
// Output errors and die with a failure message
$errortext = "";
foreach($errors as $error) {
$errortext .= "<li>".$error."</li>";
}
die("<span class='failure'>The following errors occured:<ul>". $errortext ."</ul>   </span>");
}
// Send the email
$to = "contact@dorsetdesigns.co.uk";
$subject = "Quote Request: $name";
$message = "Telephone Number: $telephone"."'n"."Job Details: $message"."'n"."Number of Pages Required: $pages"."'n"."Clients Budget: $budget";
$headers = 'Content-Type: text/html; charset=utf-8';
"Quote Request From: $email";
mail($to, $subject, $message, $headers);
// Die with a success message
die("<span class='success'>Success! Your message has been sent.</span>");
// A function that checks to see if
// an email is valid
function validEmail($email)
{
$isValid = true;
$atIndex = strrpos($email, "@");
if (is_bool($atIndex) && !$atIndex)
{
  $isValid = false;
}
else
{
  $domain = substr($email, $atIndex+1);
  $local = substr($email, 0, $atIndex);
  $localLen = strlen($local);
  $domainLen = strlen($domain);
  if ($localLen < 1 || $localLen > 64)
  {
     // local part length exceeded
     $isValid = false;
  }
  else if ($domainLen < 1 || $domainLen > 255)
  {
     // domain part length exceeded
     $isValid = false;
  }
  else if ($local[0] == '.' || $local[$localLen-1] == '.')
  {
     // local part starts or ends with '.'
     $isValid = false;
  }
  else if (preg_match('/''.''./', $local))
  {
     // local part has two consecutive dots
     $isValid = false;
  }
  else if (!preg_match('/^[A-Za-z0-9''-''.]+$/', $domain))
  {
     // character not valid in domain part
     $isValid = false;
  }
  else if (preg_match('/''.''./', $domain))
  {
     // domain part has two consecutive dots
     $isValid = false;
  }
  else if(!preg_match('/^(''''.|[A-Za-z0-9!#%&`_=''/$''*+?^{}|~.-])+$/',
             str_replace("''''","",$local)))
  {
     // character not valid in local part unless
     // local part is quoted
     if (!preg_match('/^"(''''"|[^"])+"$/',
         str_replace("''''","",$local)))
     {
        $isValid = false;
     }
  }
  if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A")))
  {
     // domain not found in DNS
     $isValid = false;
  }
  }
  return $isValid;
  }
  ?>

和 JS

    $(function() {
      // Validate the contact form
      $('#contactform').validate({
        // Specify what the errors should look like
        // when they are dynamically added to the form
        errorElement: "label",
        wrapper: "td",
        errorPlacement: function(error, element) {
          error.insertBefore( element.parent().parent() );
          error.wrap("<tr class='error'></tr>");
          $("<td></td>").insertBefore(error);
        },
        // Add requirements to each of the fields
        rules: {
          name: {
            required: true,
            minlength: 2
          },
          email: {
            required: true,
            email: true
          },
           telephone: {
            required: true,
            minlength: 6
          },
          message: {
            required: true,
            minlength: 10
          }
        },
        // Specify what error messages to display
        // when the user does something horrid
        messages: {
          name: {
            required: "Please enter your name.",
            minlength: jQuery.format("At least {0} characters required.")
          },
          email: {
            required: "Please enter your email.",
            email: "Please enter a valid email."
          },
          telephone: {
            required: "Please enter a phone number.",
            minlength: jQuery.format("At least {0} characters required.")
          },
          message: {
            required: "Please enter a message.",
            minlength: jQuery.format("At least {0} characters required.")
          }
        },
        // Use Ajax to send everything to quote.php
        submitHandler: function(form) {
          $("#send").attr("value", "Sending...");
          $(form).ajaxSubmit({
            target: "#response",
            success: function(responseText, statusText, xhr, $form) {
              $(form).slideUp("fast");
              $("#response").html(responseText).hide().slideDown("fast");
            }
          });
          return false;
        }
      });
    });
$headers = 'Content-Type: text/html; charset=utf-8';

您将其作为 HTML 电子邮件发送,因此您的换行符将被忽略。

你可以将它们更改为HTML换行符(将'n更改为<br />,正如Mathieu Imbert上面建议的那样。但是,由于您在邮件中没有使用 HTML,因此您可以从标题中完全删除该行。

对于某些电子邮件客户端(如 Outlook),您需要使用:

'r'n

如果您要以 HTML 格式发送电子邮件,请使用:

<br />