• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage Warning mail() - SMTP server response: 553 We do not relay non-local mail

berkotv

Neues Mitglied
Ich bin fast fertig für meine Projektarbeit, allerdings will ich bei der Registrierung eine E-Mail Verifikation schicken mit einem Code. Als ich es dann geschrieben habe. kam dieser Fehler. Ich bin am verzweifeln. Ich habe in XAMPP Apache, MySQL und Mercury aktiviert.

PHP:
if (empty($errors)){
        $activation_code = md5(rand());
        $sql = "INSERT INTO users (username, email, password, activation_code) VALUES (?, ?, ?, ?);";
        $stmt = $db->prepare($sql);
        if($stmt->execute([$username, $email, password_hash($pwd, PASSWORD_DEFAULT), $activation_code])){
         
            //header("location: login.php");
         $mail_link = "[URL]http://localhost//Webseite/email_verify.php[/URL]";
         $mail_link .= '?email='.$email;
         $mail_link .= '&activation_code='.$activation_code;
         if(mail($email, 'Anmeldebestätigung', $mail_link, "From: Webmaster")){
            echo "Anmeldung erfolgreich. Bitte bestätige deinen E-Mail Link.";
         }
         else{
            $sql = "DELETE FROM users Where email = ?";
            $stmt = $db->prepare($sql);
            $stmt->execute([$email]);
            array_push($errors, 'Fehler beim Senden der Bestätigungsmail. ');
         }
        }
        else{
            array_push($errors, 'Es ist ein Fehler aufgetreten.');

        }
    }

In der PHP.ini datei habe ich folgendes stehen:
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

; For Win32 only.
; https://php.net/sendmail-from
;sendmail_from = Admin@localhost

[edit by Mod] [ code=php ] [ /code ]-Tag eingepflegt
 

Anhänge

  • Bild_2023-03-02_143054974.png
    Bild_2023-03-02_143054974.png
    17,5 KB · Aufrufe: 8
  • Bild_2023-03-02_143202458.png
    Bild_2023-03-02_143202458.png
    136,2 KB · Aufrufe: 8
  • Bild_2023-03-02_143236782.png
    Bild_2023-03-02_143236782.png
    15,2 KB · Aufrufe: 8
Zuletzt bearbeitet von einem Moderator:
Werbung:
Danke für den Hinweis. Allerdings steht immer noch die Fehlermeldung da.
 

Anhänge

  • 11.png
    11.png
    58,1 KB · Aufrufe: 7
  • 12.png
    12.png
    82,5 KB · Aufrufe: 7
Werbung:
Der Fehler SMTP 553 sagt auch aus, dass die Mailadresse nicht existiert. Generell ist auch davon abzuraten die PHP eigene Mail-Funktion zu nutzen. Diese wird oft als SPAM erkannt oder vom annehmenden Server nicht angenommen.

Hier würde ich z.B. auf PHP-Mailer zurückgreifen.
 
Werbung:
Kann ich mit PHP Mailer, eine E-Mail Verifikation machen beim neu registriert hat?

EDIT:
Ich habe ein Teil des Codes gelöscht, sodass ich mich wieder normal registrieren kann ohne E-Mail Bestätigung. Meine Projektarbeit ist das ich mich registriere mit einer E-Mail Bestätigung. Was genau muss ich da machen?
So sieht mein Register code aus:
PHP:
<?php
include "database.php";


$username = $email = $pwd = $confirm_pwd = '';
$errors = [];

if(isset($_POST['register'])) {
    $username = trim($_POST['username']);
    $email = trim($_POST['email']);
    $pwd = trim($_POST['pwd']);
    $confirm_pwd = trim($_POST['confirm_pwd']);

    if ($username == '' || $email == '' || $pwd == '' || $confirm_pwd == ''){
        array_push($errors, 'Eingabe fehlt. ');
    }
    else {
        $sql = "SELECT id FROM users WHERE username = ? OR email = ?";
        $stmt = $db->prepare($sql);
        $stmt->execute([$username, $email]);
        $data = $stmt->fetchAll();

        if(!empty($data)){
            array_push($errors, 'Username/Email bereits vorhanden.');
        }
        if($pwd != $confirm_pwd){
            array_push($errors, 'Passwort stimmt nicht überein.');
        }

    }

    if (empty($errors)){
        $sql = "INSERT INTO users (username, email, password) VALUES (?, ?, ?);";
        $stmt = $db->prepare($sql);
        if($stmt->execute([$username, $email, password_hash($pwd, PASSWORD_DEFAULT)])){
           
            header("location: login.php");
        }
        else{
            array_push($errors, 'Es ist ein Fehler aufgetreten.');
        }
    }
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
   
    <h1>Registrierung</h1>

    <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">

    <p>
        <label for="username">Benutzername</label>
        <input type="text" id= "username" name="username">
    </p>

    <p>
        <label for="email">E-Mail</label>
        <input type="text" id= "email" name="email">
    </p>

    <p>
        <label for="pwd">Passwort</label>
        <input type="password" id= "pwd" name="pwd">
    </p>
 
    <p>
        <label for="confirm_pwd">Passwort bestätigen</label>
        <input type="password" id= "confirm_pwd" name="confirm_pwd">
    </p>

    <p>
        <input type="submit" value="Registrieren" name="register">
    </p>

    </form>

    <p>
       <?php
            foreach($errors as $error) {
                echo $error. "<br>";
            }
            ?>
    </p>

</body>
</html>
 
Zuletzt bearbeitet:
Zurück
Oben