akprivat
Goto Top

Warum wird keine Mail verschickt?

Hallo,
ich habe da so ein kleinen problem und finde den fehler nicht.
aus diesem grund wende ich mich an euch und hoffe das ihr mir helfen könnt.
wenn meine benutzer ihr passwor vergessen haben können sie ihr passwort
mit hilfe "passwort vergessen" ihr passwort zurücksetzen.
dazu müssen sie ihre emai adresse eintragen.
Leider bekommt keiner eine mail um ihr passwort zurück zu setzen.
es wird auch kein fehler angezeigt.
es kommt die meldung, dass eine mail versendet wurde, was aber nich der fall ist
ich habe mal den php coder von der seite passwort vergessen rein gestellt.
vieleicht findet jemand von euch da einen fehler (ich finde keinen).


<?php 
session_start();
require_once("inc/config.inc.php");  
require_once("inc/functions.inc.php");  

include("templates/header.inc.php");  
?>
 <div class="container small-container-330">  
	<h2 >Passwort vergessen</h2>


<?php 
$showForm = true;
 
if(isset($_GET['send']) ) {  
	if(!isset($_POST['email']) || empty($_POST['email'])) {  
		$error = "<b>Bitte eine E-Mail-Adresse eintragen</b>";  
	} else {
		$statement = $pdo->prepare("SELECT * FROM users WHERE email = :email");  
		$result = $statement->execute(array('email' => $_POST['email']));  
		$user = $statement->fetch();		
 
		if($user === false) {
			$error = "<b>Kein Benutzer gefunden</b>";  
		} else {
			
			$passwortcode = random_string();
			$statement = $pdo->prepare("UPDATE users SET passwortcode = :passwortcode, passwortcode_time = NOW() WHERE id = :userid");  
			$result = $statement->execute(array('passwortcode' => sha1($passwortcode), 'userid' => $user['id']));  
			
			$empfaenger = $user['email'];  
			$betreff = "Neues Passwort für deinen Account auf beispil.de"; //Ersetzt hier den Domain-Namen  
			$from = "From: Mein Name <absender@beispil.de>"; //Ersetzt hier euren Name und E-Mail-Adresse  
			$url_passwortcode = getSiteURL().'beispil.de/passwortzuruecksetzen.php?userid='.$user['id'].'&code='.$passwortcode; //Setzt hier eure richtige Domain ein  
			$text = 'Hallo '.$user['vorname'].',  
für deinen Account auf beispil.de wurde nach einem neuen Passwort gefragt. Um ein neues Passwort zu vergeben, rufe innerhalb der nächsten 24 Stunden die folgende Website auf:
'.$url_passwortcode.'  
 
Sollte dir dein Passwort wieder eingefallen sein oder hast du dies nicht angefordert, so bitte ignoriere diese E-Mail.
 
Viele Grüße,
dein Team';  
			
			//echo $text;
			 
			mail($empfaenger, $betreff, $text, $from);
 
			echo "Ein Link um dein Passwort zurückzusetzen wurde an deine E-Mail-Adresse gesendet.";	  
			$showForm = false;
		}
	}
}
 
if($showForm):
?> 
	Gib hier deine E-Mail-Adresse ein, um ein neues Passwort anzufordern.<br><br>
	 
	<?php
	if(isset($error) && !empty($error)) {
		echo $error;
	}
	
	?>
	<form action="?send=1" method="post">  
		<label for="inputEmail">E-Mail</label>  
		<input class="form-control" placeholder="E-Mail" name="email" type="email" value="<?php echo isset($_POST['email']) ? htmlentities($_POST['email']) : ''; ?>" required>  
		<br>
		<input  class="btn btn-lg btn-primary btn-block" type="submit" value="Neues Passwort">  
	</form> 
<?php
endif; //Endif von if($showForm)
?>

</div> <!-- /container -->
 

<?php 
include("templates/footer.inc.php")  
?>

Content-ID: 648152

Url: https://administrator.de/contentid/648152

Ausgedruckt am: 21.11.2024 um 23:11 Uhr

GNULinux
GNULinux 04.02.2021 um 19:16:38 Uhr
Goto Top
Hi,
sind PHP und der Server entsprechend konfiguriert, um Mails verschicken zu können? Wenn du keinen SMTP Client nutzt und dem direkt die Server- und Zugangsdaten mitgibst, gehen die Mails sonst nicht raus.

Zwecks Fehlern: Hast du in die Logs geschaut? Meist liegen die in /var/log kann aber auch woanders sein, je nachdem wie der Server eingerichtet ist. Auf lokalen Entwicklungssystemen würde ich dir auch empfehlen, die Anzeige von Fehlern zu aktivieren. Dann siehst du die direkt beim Aufrufen deines Skriptes. Anleitungen wie man das konfiguriert gibt es zuhauf, wie z.B. hier: https://stackify.com/display-php-errors/
akprivat
akprivat 04.02.2021 um 19:40:48 Uhr
Goto Top
Hallo,
danke für die schnelle antwort.
ich habe einen eigenen widows 2012 r2 server und habe mit iis6 SMTP eingerichtet.
wo mmuss ich nachsehen ob php mails verschicken kann bzw welche einträge vorhanden sind?

das mit den Logs schauen habe ich nicht ganz verstanden.
was für logs sollte ich mir anschauen?
GNULinux
GNULinux 04.02.2021 aktualisiert um 21:30:18 Uhr
Goto Top
Oh bei Windows Servern bin ich ziemlich raus, PHP auf Windows hab ich vor Jahren einmal aus Neugierde gemacht und nie wieder. Ich meine aber dass IIS 6 schon damals ziemlich alt war, mit 2012 R2 müsstest du 8.5 haben wenn ich mich richtig erinnere.
Logs hast du in der Regel vom Webserver und von PHP. Schau mal in deine php.ini da müsste error_log=<pfad> konfiguriert sein, dort liegt die Logdatei. Da schreibt PHP alle Fehler rein die während des Betriebs auftreten. In der php.ini kannst du auch das direkte Anzeigen der Fehler mit display_errors, error_reporting etc einstellen.
akprivat
akprivat 04.02.2021 um 21:44:40 Uhr
Goto Top
danke für deine hilfe.
ja das stimm, dass 2012 r2 iis 8.5 verwendet. für den mail service smtp wird iis 6 verwendet.
dort habe ich alle notwendigen einstellungen vorgenommen.
in der php.ini habe ich die mail einstellung unter [mail function] vorgenommen.
server neu gestartet. es wird immer noch keine mail zum zurücksetzen des passworts gesendet.
Pjordorf
Pjordorf 04.02.2021 um 22:47:14 Uhr
Goto Top
Hallo,

Zitat von @akprivat:
ja das stimm, dass 2012 r2 iis 8.5 verwendet. für den mail service smtp wird iis 6 verwendet.
dort habe ich alle notwendigen einstellungen vorgenommen.
in der php.ini habe ich die mail einstellung unter [mail function] vorgenommen.
server neu gestartet. es wird immer noch keine mail zum zurücksetzen des passworts gesendet.
Schaue dir die SMTP Logs genau an. http://www.winservermart.com/HowTo/SMTP_Logs.aspx Logging schon aktiviert?
https://www.oryon.net/knowledge-base/article/how-to-check-smtp-logs-in-w ...
https://social.technet.microsoft.com/Forums/de-DE/5e91914c-90f9-4110-aba ...
http://itswapshop.com/tutorial/how-enable-logging-iis-smtp-server-windo ...
https://serverfault.com/questions/455724/what-replaces-iis-smtp-server-i ...
https://forums.iis.net/t/1241762.aspx?Virtual+SMTP+2012+r2+outbound+tls+ ...
https://forums.iis.net/t/1233252.aspx?SMTP+IIS+6+0+mail+queue+backlog
https://www.msxfaq.de/howto/winsmtp.htm

Gruß,
Peter
Inf1d3l
Inf1d3l 04.02.2021 aktualisiert um 22:54:05 Uhr
Goto Top
Welcher Server stellt die Mails deinen Usern denn zur Verfügung? Exchange? Dann ist dein SMTP-Server der Exchange. Da musst du den Webserver aber erst freischalten. Du kannst auch Fake Sendmail verwenden, um Emails zu verschicken: https://php.tutorials24x7.com/blog/how-to-use-sendmail-on-windows-to-sen ...
akprivat
akprivat 05.02.2021 um 03:23:35 Uhr
Goto Top
hallo.
log - einträge (smtp) finde ich nicht so wie es angegeben ist.
akprivat
akprivat 05.02.2021 um 03:29:48 Uhr
Goto Top
ich nutze einen externen server für mails, den ich ander per smtp auf menen server eigerichtet habe (php.ini, smtp server windows)
ichhabe mir eure link mal angesehen. schlau werde ich da nicht.