• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wysyłanie wiadomości email - PHP, JQuery, Ajax

Object Storage Arubacloud
0 głosów
1,115 wizyt
pytanie zadane 18 września 2017 w JavaScript przez svyatogor92 Użytkownik (670 p.)

Witam, 

Czego potrzebuje, aby wysyłać wiadomości email z mojej strony za pomocą formularza kontaktowego? Czy potrzebne są do tego jakieś dodatkowe usługi czy wystarczy PHP i Ajax?

Posiadam następującą strukturę formularza na stronie:
 

<form class="contact_form" method="POST">
                        <div class="input">
                            <label class="eng">Name</label>
                            <label class="pl">Imię</label>
                            <input id="name" type="text">
                        </div>
                        <div class="input">
                            <label>E-mail</label>
                            <input id="email" type="text">
                        </div>
                        <div class="input">
                            <label class="eng">Subject</label>
                            <label class="pl">Temat</label>
                            <input id="subject" type="text">
                        </div>
                        <div class="message">
                            <label class="eng">Your Message</label>
                            <label class="pl">Twoja wiadomość</label>
                            <textarea id="message"></textarea>
                        </div>
                        <div class="input">
                            <input id="submit_eng" class="button eng" type="Submit" value="Send">
                            <input id="submit_pl" class="button pl" type="Submit" value="Wyślij">
                            <input id="reset_eng" class="button eng" type="reset" value="Reset">
                            <input id="reset_pl" class="button pl" type="reset" value="Resetuj">
                        </div>
                    </form>

 

// Form Validation ------------------------------------ //
  // Form is not valid on page load //
  var isFormValid = false;

  // input variables //
  var name = $('#name');
  var email = $('#email');
  var subject = $('#subject');
  var message = $('#message');
  var subtmitBtnPl = $('#submit_pl');
  var subtmitBtnEn = $('#submit_eng');
  var resetBtnPl = $('#reset_pl');
  var resetBtnEn = $('#reset_eng');

  var form = $('.contact_form');

  var isNameValid = function () {
    var nameVal = name.val();
    return nameVal.length > 0 && nameVal.length <= 100;
  };

  var isEmailValid = function () {
    var emailVal = email.val();
    return emailVal.indexOf('@') > -1 && emailVal.length <= 100;
  };

  var isSubjectValid = function () {
    var subjectVal = subject.val();
    return subjectVal.length > 0 && subjectVal.length <= 100;
  };

  var isMessageValid = function () {
    var messageVal = message.val();
    return messageVal.length > 0 && messageVal.length <= 500;
  };

  function formValidation() {
    var isFormValid = isNameValid() && isEmailValid() && isSubjectValid() && isMessageValid();

    if (isFormValid === false) {
      alert('error');
    } else {
      //$.ajax({
       // url: "https://formspree.io/your@email.com", 
       // method: "POST",
       // data: form.serialize(),
       // dataType: "json"
     // });
      alert('succes');
      form[0].reset();
    }
  };


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

 

Czy mogę prosić o wskazówki dotyczące tego w jaki sposób można nadać "życia" temu formularzowi? :) Nie jestem zbyt biegły w back-endzie :)

komentarz 19 września 2017 przez xandros Nałogowiec (29,450 p.)
edycja 19 września 2017 przez xandros
Możesz przenieść walidacje z JS do html5: https://www.sitepoint.com/html5-form-validation/

Będzie schludniej wyglądało.
komentarz 19 września 2017 przez rafal.budzis Szeryf (85,260 p.)

@xandros może DODAĆ walidacje poprzez htmla. Walidacja po stronie przeglądarki to tylko dodatek. Walidacja po stronie serwera (np. PHP) to OBOWIĄZKOWE działanie.

1
komentarz 19 września 2017 przez xandros Nałogowiec (29,450 p.)

Wiadomo, że po stronie serwera to mus. 

Po prostu nie pasowała mi ta część kodu:

var isFormValid = false;
 
  // input variables //
  var name = $('#name');
  var email = $('#email');
  var subject = $('#subject');
  var message = $('#message');
  var subtmitBtnPl = $('#submit_pl');
  var subtmitBtnEn = $('#submit_eng');
  var resetBtnPl = $('#reset_pl');
  var resetBtnEn = $('#reset_eng');
 
  var form = $('.contact_form');

 

2 odpowiedzi

0 głosów
odpowiedź 18 września 2017 przez Piotrek32 Obywatel (1,610 p.)

W znaczniku form dopisz action="mail.php". Utwórz plik mail.php i zastosuj w nim np te funkcje :

Aby wysłać e-maila za pomocą PHP, musimy użyć do tego funkcji mail(). Jej składnia jest następująca:

mail(adresat, temat, wiadomość[, nagłówki[, parametry]])

Funkcja zwraca wartość TRUE, jeżeli wiadomość została poprawnie przekazana serwerowi poczty.

źródło:Wikipedia

komentarz 19 września 2017 przez svyatogor92 Użytkownik (670 p.)

Ok, a jak w takim razie pobrać wpisane dane do inputów? Bo rozumiem, że ma to wyglądać tak:
 

<?php
$to = "somebody@example.com";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: webmaster@example.com" . "\r\n" .
"CC: somebodyelse@example.com";

mail($to,$subject,$txt,$headers);
?>

I teraz rozumiem, że musiałbym zmienić $subject, $txt, $headers tak, aby pobierały te dane z mojego formularza- jak tego dokonać?

0 głosów
odpowiedź 18 września 2017 przez Jedras Maniak (54,860 p.)
Do wysłania emaila wystarczy samo PHP, ale na pewno nie funkcja mail tylko:
https://github.com/PHPMailer/PHPMailer
komentarz 18 września 2017 przez Programista31 Użytkownik (640 p.)
Hm ciekawe PHPMailer to dość obszerna klasa zgadza się, ale samą funkcją mail też pójdzie i to nawet na localhoscie interesująca odpowiedz. Naprawdę
2
komentarz 19 września 2017 przez xandros Nałogowiec (29,450 p.)
Tak tylko napomkne, że musisz mieć zainstalowany serwer mailowy lub skonfigurowany smtp, bo inaczej nie wyślesz maila.
komentarz 19 września 2017 przez Programista31 Użytkownik (640 p.)
Wybacz kolego ale każdy serwer lokalny to umożliwia a serwer w sieci o czym dokładniej jest ten temat to już podstawa więc dopisać kilka linijek kodu do np. funkcji mail ponieważ rozmawiamy tylko o formularzu kontaktowym to nie sztuka wiec zamiast wsadzać całego PHPMailera wydaję się dla mnie trochę mało profesjonalne. Gdyby to było coś na zasadzie multi maling-u to jeszcze ok. Ale są gusta i guściki.
komentarz 19 września 2017 przez Assasz Nałogowiec (30,460 p.)
Mało profesjonalne jest używanie mail(). Od tego jest PHPMailer/SwiftMailer.
komentarz 19 września 2017 przez Programista31 Użytkownik (640 p.)
Interesujące naprawdę. Ale za to korzystanie z PHPMailer lub SwiftMailer jest bardzo profesjonalne ? Może tak trudno wam dopisać skrypt do funkcji mail. Jak zabieracie się po prostu prawie za gotowce.

Podobne pytania

0 głosów
1 odpowiedź 413 wizyt
pytanie zadane 1 czerwca 2017 w PHP przez Nessvet Nowicjusz (230 p.)
0 głosów
2 odpowiedzi 477 wizyt
pytanie zadane 31 lipca 2017 w C# przez Kamio Obywatel (1,100 p.)
0 głosów
1 odpowiedź 279 wizyt
pytanie zadane 31 stycznia 2018 w PHP przez kingkushlee Gaduła (3,960 p.)

92,555 zapytań

141,402 odpowiedzi

319,540 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...