funkcja mail()

0

Witam, próbuje stworzyć formularz kontaktowy działający przy zastosowaniu funkcji php mail(), niestety nie działa ani na localhoście ani na serwerze na którym testuje aplikacje (cba.pl) i nie mam pojęcia dlaczego, mógłby ktoś zajrzeć w ten kod:


<?php
	
	if (isset($_POST['submit'])){
		$email = $_POST['email'];
		$msg = $_POST['msgtxt'];
		$from = 'Contact Form Pachamama Center';
		$to = 'ptrzepinski@gmail.com';
		$subject = 'Messeage from Pachamama Center Contact Form';
		$body = "from $email\n\n $msg";
		
	// check if email has been entered and is valid
	if (!$_POST['email'] || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
			$errEmail = 'Please enter a valid e-mail adress';
		}
	if (!$_POST['msgtxt']) {
		$errMessage = 'Please enter your message';
	}

	if (mail ($to, $subject, $body, $from)) {
			$result = '<div class="alert alert-success alert-dismissable"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>The message has been sent succefuly</div>';
	} else { 
			$result = '<div class="alert alert-danger alert-dismissable"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>The message has not been sent. Please check if the form is filled correctly</div>';
	}
		
	
	}
	
	?>

Sam formularz wygląda natomiast tak:


<form action="index.php#kontakt" method="post">							
	<div class="form-group">
		<label for="mail" class="sr-only">E-mail:</label>
		<input type="email" class="form-control" id="mail" name="email" placeholder="E-mail"></input>
	</div>
								
	<div class="form-group">
		<label for="msg" class="sr-only">Sporočilo:</label>
		<textarea class="form-control" id="msg" name="msgtxt" placeholder="Sporočilo"></textarea>
	</div>
	<button type="submit" name="submit" class="btn btn-warning btn-block">Pošlji</button>
</form>

0

Nie działa, czyli co się dzieje? Wyświetlane są jakieś błędy? Wiadomość nie dociera do skrzynki docelowej? Co zwraca funkcja mail?

0

A masz postawiony serwer sendmail ?

0

Funkcja mail nie zwraca błędów, wiadomość nie dociera do skrzyki docelowej, sendmail na localhoście mam skonfigurowany prawidłowo, zresztą z hostingu cba.pl również nie dochodzą wiadomości.

0

Spróbuj skorzystać z tego narzędzia: https://www.mail-tester.com/
Jeżeli wiadomość nie dotrze i tam, to znaczy że coś jest nie tak z Twoim skryptem lub z konfiguracją php / sendmail. Sprawdź jaki wynik zwraca funkcja mail - true, czy false?
Po wykonaniu funkcji mail wyświetl to co zwróci funkcja error_get_last.

0

Wiadomość nie dociera na mail-tester. Funkcja mail zwraca false. error_get_last zwraca: array ( 'type' => 2, 'message' => 'mail(): Failed to connect to mailserver at "smtp.gmail.com" port 465, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()'

moje ustawienie php.ini

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP=smtp.gmail.com
; http://php.net/smtp-port
smtp_port=465

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = ptrzepinski@gmail.com

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

sendmail:

[sendmail]

smtp_server=smtp.gmail.com
smtp_port=465
error_logfile=error.log
debug_logfile=debug.log
auth_username=ptrzepinski@gmail.com
auth_password=tu_jest_prawdziwe_haslo
force_sender=ptrzepinski@gmail.com
0

Masz włączoną na gmail możliwość dostępu do konta mniej bezpiecznych aplikacji? Więcej info tutaj: https://support.google.com/accounts/answer/6010255?hl=pl

0

Tak, mam włączone

0

Do wysyłania wiadomości przez port 465 jest wymagane włączenie szyfrowania "ssl". Sprawdź czy u Ciebie jest to włączone. Możesz też spróbować wysłać wiadomość przez port 587. Na tym porcie wymagane jest szyfrowanie "tls".

0

Wrzuciłem na inny hosting i zaczęło działać. Nie mam pojęcia co jest nie tak z moją konfiguracją sendmaila. Dziękuję wszystkim za pomoc.

0

może ustawienia hostingu (php config)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.