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).
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")
?>
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 648152
Url: https://administrator.de/contentid/648152
Ausgedruckt am: 21.11.2024 um 23:11 Uhr
8 Kommentare
Neuester Kommentar
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/
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/
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.
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.
Hallo,
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
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?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.
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
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 ...