-1

I need some help with my php. I am creating an ajax php mailer system, and I'm trying to figure out two things, I want to make it so when the email is successfully sent, to redirect to another page

and, I have another problem, when I send an email, the 'from' part has a name of my web host username, and I want to change it to my email, anyone know how to do that with php, or ajax.

php file

<?php

        // Only process POST reqeusts.
        if ($_SERVER["REQUEST_METHOD"] == "POST") {
            // Get the form fields and remove whitespace.
            $name = strip_tags(trim($_POST["name"]));
            $phone = trim($_POST["tel"]);
            $time = trim($_POST["time"]);
            $method = trim($_POST["method"]);
                    $name = str_replace(array("\r","\n"),array(" "," "),$name);
            $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
            $message = trim($_POST["message"]);

            // Check that data was sent to the mailer.
            if ( empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
                // Set a 400 (bad request) response code and exit.
                http_response_code(400);
                echo "Oops! There was a problem with your submission. Please complete the form and try again.";
                exit;
            }

            // Set the recipient email address.
            // FIXME: Update this to your desired email address.
            $recipient = "WebInquiry@ThePPCGroup.Com";

            // Set the email subject.
            $subject = "New contact from $name";
            $msg = "Thank you for contacting ThePPCGroup.\nSomeone will contact you shortly. Please let us know the best time to reach you, and if phone or email is better.\nThePPCGroup\n855-539-4742\nWebInquiry@ThePPCGroup.Com\nWWW.ThePPCGroup.Com";
            // Build the email content.
            $email_content = "Name: $name\n";
            $email_content .= "Email: $email\n\n";
            $email_content .= "Phone: $phone\n\n";
            $email_content .= "Prefered Time: $time\n\n";
            $email_content .= "Prefered Method: $method\n\n";
            $email_content .= "Message:\n$message\n";

            // Build the email headers.
            $email_headers = "From: $name <$email>";

            // Send the email.
            if (mail($recipient, $subject, $email_content, $email_headers)) {
                // Set a 200 (okay) response code.
                http_response_code(200);
                mail($email, "Thank You!", $msg, "WebInquiry@ThePPCGroup.Com")
            } else {
                // Set a 500 (internal server error) response code.
                http_response_code(500);
                echo "Oops! Something went wrong and we couldn't send your message.";
            }

        } else {
            // Not a POST request, set a 403 (forbidden) response code.
            http_response_code(403);
            echo "There was a problem with your submission, please try again.";
        }

    ?>

ajax file

function sendEmail() {
    var form = $('#ajax-contact');
    var formMessages = $('#form-messages');
    var formData = $(form).serialize();


    $(form).submit(function(event) {
        event.preventDefault();
    });

    $.ajax({
      type: 'POST',
      url: $(form).attr('action'),
      data: formData
    })

    .done(function(response) {
      $(formMessages).removeClass('error');
      $(formMessages).addClass('success');

      $(formMessages).text(response);
      $('#name').val('');
      $('#email').val('');
      $('#tel').val('');
      $('#time').val('');
      $('#method').val('');
      $('#message').val('');
      window.location = 'http://www.theppcgroup.com/thank-you.html';
    })

    .fail(function(data) {
      $(formMessages).removeClass('success');
      $(formMessages).addClass('error');

      if (data.responseText !== '') {
          $(formMessages).text(data.responseText);
      } else {
          $(formMessages).text('Oops! An error occured and your message could not be sent.');
      }
    });
  }

if ($('#submit').on('click', function() {
  sendEmail();
}));
Hunter Turner
  • 6,804
  • 11
  • 41
  • 56
Yisroel Arnson
  • 69
  • 1
  • 11

1 Answers1

0

You can return an array to the ajax function like this:

// Send the email.
            if (mail($recipient, $subject, $email_content, $email_headers)) {
                // Set a 200 (okay) response code.
                http_response_code(200);
                mail($email, "Thank You!", $msg, "WebInquiry@ThePPCGroup.Com");
                $response = array('status': true, 'message': "Thank You!");   
            } else {
                // Set a 500 (internal server error) response code.
                http_response_code(500);
                $response = array('status': false, 'message': "Oops! Something went wrong and we couldn't send your message.");                
            }
        } else {
            // Not a POST request, set a 403 (forbidden) response code.
            http_response_code(403);
            $response = array('status': false, 'message': "There was a problem with your submission, please try again.");            
        }
        return json_encode($response);

and in ajax

.done(function(response) {
      $(formMessages).removeClass('error');
      $(formMessages).addClass('success');

      $(formMessages).text(response.message);
      $('#name').val('');
      $('#email').val('');
      $('#tel').val('');
      $('#time').val('');
      $('#method').val('');
      $('#message').val('');
      if (response.status == true){
       window.location = 'http://www.theppcgroup.com/thank-you.html';
      }
    })
CardCaptor
  • 390
  • 1
  • 5
  • 13