Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX][PHP]wysłanie maila, mój skrypt do wysyłania wiadomości
capitanweed123
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 31.05.2016

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
mlawnik
post
Post #2





Grupa: Zarejestrowani
Postów: 455
Pomógł: 49
Dołączył: 12.04.2010

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
capitanweed123
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 31.05.2016

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Arcioch
post
Post #4





Grupa: Zarejestrowani
Postów: 324
Pomógł: 110
Dołączył: 18.09.2012

Ostrzeżenie: (0%)
-----


var_dump na funkcję mail i zobacz czy zwraca true (IMG:style_emoticons/default/smile.gif)
Wiele serwerów ma wyłączoną obsługę tej funkcji (IMG:style_emoticons/default/smile.gif) jak testujesz na lokalu to "nie ma szans" na wysyłkę maila
Użyj wysyłki przez SMTP i klasy typu SwiftMailer
Go to the top of the page
+Quote Post
capitanweed123
post
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 31.05.2016

Ostrzeżenie: (0%)
-----


Dzięki, ale za bardzo nie rozumiem co mam spróbować czy zrobić? Co do wysyłki to testują na serwerze normalnym, nie lokalnym.
Go to the top of the page
+Quote Post
Arcioch
post
Post #6





Grupa: Zarejestrowani
Postów: 324
Pomógł: 110
Dołączył: 18.09.2012

Ostrzeżenie: (0%)
-----


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?

Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@capitanweed123 przestan dawac POMOGL za kazdy post w temacie ! Problem zostanie rozwiazany, to wtedy przydziel po jednym POMOGL osobom, ktore pomogly. Usuwam twoje POMOGL.
Go to the top of the page
+Quote Post
capitanweed123
post
Post #8





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 31.05.2016

Ostrzeżenie: (0%)
-----


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;
Go to the top of the page
+Quote Post
viking
post
Post #9





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


(IMG:style_emoticons/default/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);


Ten post edytował viking 31.05.2016, 12:56:54
Go to the top of the page
+Quote Post
capitanweed123
post
Post #10





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 31.05.2016

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Arcioch
post
Post #11





Grupa: Zarejestrowani
Postów: 324
Pomógł: 110
Dołączył: 18.09.2012

Ostrzeżenie: (0%)
-----


Jejku wysyłasz dane ajaxem tak jak piszesz to jakiego komunikatu się spodziewasz (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
kapslokk
post
Post #12





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


W jakiej firmie masz wykupiony hosting?
Go to the top of the page
+Quote Post
capitanweed123
post
Post #13





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 31.05.2016

Ostrzeżenie: (0%)
-----


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?

Ten post edytował capitanweed123 31.05.2016, 13:56:36
Go to the top of the page
+Quote Post
Lord
post
Post #14





Grupa: Zarejestrowani
Postów: 239
Pomógł: 32
Dołączył: 10.03.2004

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
capitanweed123
post
Post #15





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 31.05.2016

Ostrzeżenie: (0%)
-----


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.

Ten post edytował capitanweed123 7.06.2016, 09:15:47
Go to the top of the page
+Quote Post
viking
post
Post #16





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 18:07