Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][PHP]wysłanie maila
Forum PHP.pl > Forum > Przedszkole
capitanweed123
Witam, posiadam skrypt do wysyłania wiadomości z strony:

  1. <?php
  2.  
  3. header('Content-type: application/json');
  4.  
  5. $status = array(
  6.  
  7. 'type'=>'success',
  8.  
  9. 'message'=>'Wiadomość została wysłana. Dziękujemy za kontakt '
  10.  
  11. );
  12.  
  13.  
  14. $name = @trim(stripslashes($_POST['name']));
  15.  
  16. $email = @trim(stripslashes($_POST['email']));
  17.  
  18. $subject = @trim(stripslashes($_POST['subject']));
  19.  
  20. $message = @trim(stripslashes($_POST['message']));
  21.  
  22.  
  23. $email_from = $email;
  24.  
  25. $email_to = 'mail@mail.com';//replace with your email
  26.  
  27.  
  28. $body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;
  29.  
  30.  
  31. $success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>');
  32.  
  33.  
  34. echo json_encode($status);
  35.  
  36. die;


Niestety z jakiegoś powodu nie che on działać. Może mi ktoś wyjaśnić dlaczego?
mlawnik
Znak '@' przed nazwą funkcji ukrywa błędy. Usuń go sprzed wywołań funkcji - prawdopodobnie pojawią się błędy. Skopiuj ich treść i wróć tutaj - nie umiemy wróżyć z fusów wink.gif
capitanweed123
Dzięki za odpowiedź. Niestety wszystko wygląda w porządku - jest komunikat, że wiadomość została wysłana, ale nie chce dojść do skrzynki pocztowej. Po usunięciu znaków @ problem jest ten sam - nie wyskakuje, żaden inny komunikat.
Arcioch
var_dump na funkcję mail i zobacz czy zwraca true smile.gif
Wiele serwerów ma wyłączoną obsługę tej funkcji smile.gif jak testujesz na lokalu to "nie ma szans" na wysyłkę maila
Użyj wysyłki przez SMTP i klasy typu SwiftMailer
capitanweed123
Dzięki, ale za bardzo nie rozumiem co mam spróbować czy zrobić? Co do wysyłki to testują na serwerze normalnym, nie lokalnym.
Arcioch
Usuń małpę i zrób:

  1. var_dump($success);

Sprawdź w konsoli co zwraca czy false czy true;

Dodatkowo sprawdź za pomocą funkcji phpinfo(); czy funkcja ta jest włączona na serwerze.
Wiem, że to głupie pytanie ale czy zmieniłeś ten mail: mail@mail.com na własny?

nospor
@capitanweed123 przestan dawac POMOGL za kazdy post w temacie ! Problem zostanie rozwiazany, to wtedy przydziel po jednym POMOGL osobom, ktore pomogly. Usuwam twoje POMOGL.
capitanweed123
Miałem zmienić w ten sposób? Dodatkowo nie wiem w jakiej konsoli to sprawdzić oraz w jaki sposób - i gdzie umieścić phpinfo(). Z góry sorry, za taką niewiedzę, ale jest to jedyna rzecz jaką chciałbym zamknąć i skończyć. Co do emaila - to tak, jest zmieniony.
  1. <?php
  2.  
  3. header('Content-type: application/json');
  4.  
  5. $status = array(
  6.  
  7. 'type'=>'success',
  8.  
  9. 'message'=>'Wiadomość została wysłana. Dziękujemy za kontakt '
  10.  
  11. );
  12.  
  13.  
  14. $name = var_dump($success)trim(stripslashes($_POST['name']));
  15.  
  16. $email = var_dump($success)trim(stripslashes($_POST['email']));
  17.  
  18. $subject = var_dump($success)trim(stripslashes($_POST['subject']));
  19.  
  20. $message = var_dump($success)trim(stripslashes($_POST['message']));
  21.  
  22.  
  23. $email_from = $email;
  24.  
  25. $email_to = 'mail@mail.com';//replace with your email
  26.  
  27.  
  28. $body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;
  29.  
  30.  
  31. $success = var_dump($success)mail($email_to, $subject, $body, 'From: <'.$email_from.'>');
  32.  
  33.  
  34. echo json_encode($status);
  35.  
  36. die;
viking
sciana.gif Możesz być początkujący ale jakieś podstawowe zapoznanie ze składnią języka by się przydało. Miałeś do swojego kodu wstawić:

  1. $success = mail($email_to, $subject, $body, 'From: <'.$email_from.'>');
  2. var_dump($success);
capitanweed123
Dzięki za wytłumaczenie. Dodałem to do kodu, ale nic się nie stało - nie było nawet komunikatu, że wiadomość została wysłana. Więc czego może to być wina?
Arcioch
Jejku wysyłasz dane ajaxem tak jak piszesz to jakiego komunikatu się spodziewasz smile.gif
Odpal narzędzie zwane firebugiem, czyli naciśnij przycisk F12 w większości przeglądarek, i zobacz co pisze w konsoli jak odpalasz akcję wysyłki maila.
kapslokk
W jakiej firmie masz wykupiony hosting?
capitanweed123
błąd (chyba o to chodziło):

SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data

Jeżeli chodzi o serwer to niestety One.Com

@UP

Mógłby ktoś pomóc?
Lord
Cytat(capitanweed123 @ 3.06.2016, 11:52:40 ) *
błąd (chyba o to chodziło):

SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data

Jeżeli chodzi o serwer to niestety One.Com

@UP

Mógłby ktoś pomóc?

odpal chrome ctrl+shift+i, tam masz console i zobaczysz co dzieje się po stronie skryptu php, a ten bład oznacza ze jest jakis znak spowodowany prawdopodobnie błedem php, który nie jest wynikiem działania json_encode, bo wyniki twój skrypt oczekuje w takim formacie
capitanweed123
Sprawdziłem w konsoli i nic sie nie pokazuje, zachowuje się jak by wysyłało wiadomość, ale nic nie dochodzi.
Tak wygląda skrypt:
  1. <?php
  2. $name = @trim(stripslashes($_POST['name']));
  3. $from = @trim(stripslashes($_POST['email']));
  4. $subject = @trim(stripslashes($_POST['subject']));
  5. $message = @trim(stripslashes($_POST['message']));
  6. $to = 'email@email.com';//replace with your email
  7.  
  8. $headers = array();
  9. $headers[] = "MIME-Version: 1.0";
  10. $headers[] = "Content-type: text/plain; charset=iso-8859-1";
  11. $headers[] = "From: {$name} <{$from}>";
  12. $headers[] = "Reply-To: <{$from}>";
  13. $headers[] = "Subject: {$subject}";
  14. $headers[] = "X-Mailer: PHP/".phpversion();
  15.  
  16. mail($to, $subject, $message, $headers);
  17.  


Powiem szczerze, że już nie mam pojęcia co zrobić, aby to działało. Nie wiem czego może to być wina bo wszystko wygląda na to, że jest napisane poprawnie.
viking
Możesz mieć pełno błędów w pierwszych liniach jeśli POST jest puste a to z kolei może powodować błąd przy wysyłce. Mail też nie wyśle się z Windowsa (bez serwera) jeśli tak próbujesz.
Ostatnio pisałem jak wysłać maila za pomocą Zend Mail.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.