соединяем вместе почтовую форму jquery - PullRequest
0 голосов
/ 05 мая 2010

Моя новизна просвечивает здесь ... Мне удалось собрать воедино почтовую программу, которая прекрасно работает, но теперь мне нужно добавить еще два поля, и я не знаю, как это сделать. За несколько месяцев я прокомментировал некоторые вещи, которые мне не нужны, но теперь я застрял.

Я позаимствовал этот урок, чтобы сделать оригинальную форму: http://trevordavis.net/blog/tutorial/ajax-forms-with-jquery/

Но затем я его каннибализировал, чтобы создать форму для подписки на рассылку по электронной почте, поэтому мне нужны следующие поля:

  • электронная почта получателя (моя электронная почта жестко запрограммирована)

  • адрес электронной почты отправителя

  • предмет (жестко запрограммирован)
  • имя и город в теле сообщение

Для моей формы у меня есть это:

<div>
  <?php include('verify.php'); ?>
      <form action="index_success.php" method="post" id="sendEmail" class="email">
        <h3 class="register2">Newsletter Signup:</h3>
        <ul class="forms email">
         <li class="name"><label for="yourName">Name: </label>
     <input type="text" name="yourName" class="info" id="yourName" value=" " /><br>
    </li>

    <li class="city"><label for="yourCity">City: </label>
     <input type="text" name="yourCity" class="info" id="yourCity" value=" " /><br>
    </li>
     <li class="email"><label for="emailFrom">Email: </label>
     <input type="text" name="emailFrom" class="info" id="emailFrom" value="<?= $_POST['emailFrom']; ?>" />
                 <?php if(isset($emailFromError)) echo '<span class="error">'.$emailFromError.'</span>'; 
                 ?>
            </li>

           <li class="buttons email">
               <button type="submit" id="submit">Send</button>
               <input type="hidden" name="submitted" id="submitted" value="true" />
           </li>

        </ul>
      </form>
</div>

emailcontact.js:

$(document).ready(function(){
  $("#submit").click(function(){
    $(".error").hide();
    var hasError = false;
    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;


    var emailFromVal = $("#emailFrom").val();

    if(emailFromVal == '') {
      $("#emailFrom").after('<span class="error">You forgot to enter the email address to send from.</span>');
      hasError = true;

    } else if(!emailReg.test(emailFromVal)) {
      $("#emailFrom").after('<span class="error">Enter a valid email address to send from.</span>');
      hasError = true;
    }

    var subjectVal = $("#subject").val();
    if(subjectVal == '') {
        $("#subject").after('<span class="error">You forgot to enter your name.</span>');
        hasError = true;
    }

    var messageVal = $("#message").val();
    if(messageVal == '') {
        $("#message").after('<span class="error">You forgot to enter your city.</span>');
        hasError = true;
    }
    if(hasError == false) {
      $(this).hide();
      $("#sendEmail li.buttons").append('<img src="/wp-content/themes/default/images/template/loading.gif" alt="Loading" id="loading" />');
      $.post("/includes/sendemail.php",
//emailTo: emailToVal, 
           { emailFrom: emailFromVal, subject: subjectVal, message: messageVal  },
             function(data){
            $("#sendEmail").slideUp("normal", function() {
              $("#sendEmail").before('<h3 class="register2">Success!</h3><p class="emailbox">You are on the Newsletter email list.</p>');
            });
             }
         );
    }
    return false;
  });
});

sendmail.php:

<?php
$mailTo = $_POST['emailTo'];
$mailFrom = $_POST['emailFrom'];
$subject = $_POST['yourName'];
$message = $_POST['yourCity'];
mail('me@myemail.com','Newsletter', 'Name='.$subject. ' City='.$message, "From: ".$mailFrom);

?>

Спасибо за любую помощь! Я собираюсь сойти с ума, пытаясь выяснить это.

1 Ответ

1 голос
/ 05 мая 2010

Не уверен на 100%, в чем тут сложность. Из моего чтения ОП я предполагаю следующее:

  • Вы хотите добавить в форму два дополнительных поля («имя» и «город»), чтобы их содержимое отображалось в теле создаваемого электронного письма.
  • Вы хотите жестко закодировать адрес электронной почты получателя.
  • Вы хотите добавить в форму дополнительное поле для адреса электронной почты отправителя.
  • Вы хотите жестко закодировать тему сгенерированного электронного письма.

Я не совсем уверен, что это именно то, что вы хотели, поскольку " тема адреса электронной почты отправителей (жестко запрограммировано) " не звучит ужасно ясно.

В любом случае, работая над этими предположениями:

  1. Просто добавьте два новых поля в форму в файле PHP для " firstName " и " city " (Примечание: это просто рекомендуемые имена полей, и они могут будь что хочешь. Но я буду использовать их в предложенном решении для ясности.)

  2. В файле sendmail.php измените его следующим образом:

    $ mailTo = 'your_email_address@server.com'; // Это адрес получателя в жестком коде $ mailSubject = 'Это тема'; // Это жестко закодированный предмет

    $ mailFrom = $ _POST ['emailFrom']; $ firstName = $ _POST ['firstName']; $ city = $ _POST ['city'];

    ... (дополнительные поля и, возможно, дальнейшая проверка здесь) ... $ mailHeader = "From: {$ mailFrom}"; $ mailBody = "Name = {$ firstName} City = {$ city}";

    mail ($ mailTo, $ mailSubject, $ mailBody, $ mailHeader);

  3. Я должен также отметить, что в файле PHP, содержащем форму, нет поля с именем "subject", и все же оно упоминается вашей проверкой Javascript / jQuery.

Использование существующего примера в качестве основы для знакомства с системой - это отличная идея, но есть момент, когда вам нужно начать переопределять этот пример, чтобы выполнить работу, которая вам нужна, что означает изменение имен переменных (которые вы можете адаптированы для других целей), чтобы они были логичными и соответствовали тому, что они содержат / используются и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...