RPeraltaJr
3/10/2017 - 6:49 PM

WordPress Send Mail

WordPress Send Mail

1. Include [wp-form-settings.php] at the top of the page before any headers get sent to prevent 'headers/redirect errors'

2. Never use 'name' to capture names in a contact form (in WordPress).
<?php

global $wpdb;

if(isset($_POST['submit'])) {

  $post_fields_array = array(
    "full_name", // NOTE: never use 'name' for WP forms
    "company",
    "phone",
    "email"
  );

	foreach( $post_fields_array as $post_field ) {
    $$post_field = htmlspecialchars($_POST[$post_field]);

		// validation for empty fields
		if( !isset($_POST[$post_field]) || empty($_POST[$post_field]) ) {
			$error = true;
		}
	}

	if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
		$error = true;
	}

	$table_name = "pages_submissions";
	$table_array = array(
		"form_url" 	  => $_SERVER['REQUEST_URI'],
		"ip_address"  => $_SERVER['REMOTE_ADDR']
	);

	foreach( $post_fields_array as $post_field ) { // 'post_fields_array'
		$table_array[$post_field] = $$post_field;
	}

	if (!$error) {
		$success = $wpdb->insert($table_name, $table_array);

		if ($success) {
			$msg = "Your information has been submitted!";
			$subject = "New submission from example.com";
			$body =
				"
				Name: $full_name<br>
        Company: $company<br>
        Phone: $phone<br>
        Email: $email<br>
				";
      $to = "rafaelp@bayardad.com";

			// message
			$message = "<html><head></head><body>$body</body></html>";

			$headers = 'MIME-Version: 1.0' . "\r\n";
			$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
			// Additional headers
			$headers .= "From: " . ucwords($full_name) . " <$email>" . "\r\n";
			wp_mail($to, $subject, $message, $headers);
			wp_redirect('http://example.com/thank-you.html');
			exit();
		} else {
			$msg = "Error. Please try again.";
		}

	}


}

?>
<form id="wp-pages" action="" method="post">
  <h5 class="item form-title">
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor.
  </h5>
  <input class="item" type="text" name="full_name" placeholder="NAME" maxlength="40" required>
  <input class="item" type="text" name="company" placeholder="COMPANY" maxlength="40" required>
  <input class="item" type="phone" name="phone" placeholder="PHONE" maxlength="15" required>
  <input class="item" type="email" name="email" placeholder="E-MAIL" maxlength="40" required>
  <button name="submit" type="submit">
    <span>Submit</span> <i class="fa fa-long-arrow-right"></i>
  </button>
</form>