кто-нибудь сможет мне помочь с моим вопросом. Я пытаюсь разрешить пользователям зарегистрироваться на моем сайте, а затем войти в систему после того, как они подтвердят свой адрес электронной почты. Когда они регистрируются, их данные вставляются в базу данных, и как только это произойдет, письмо должно быть отправлено на их электронную почту. Я обнаружил, что их данные вставляются в таблицу, но письмо не отправляется. Я не знаю, что я делаю неправильно, и я нахожусь на своем пути, пытаясь понять это, и я тоже не получаю сообщений об ошибках. Кроме того, я не использовал PHP очень долго. У меня также есть подключенная база данных и прочее. Вот мой код:
$email = $_POST['email']; $emailcheck = "SELECT email FROM useraccounts WHERE email = '$email'"; $result = $conn->query($emailcheck); // executes query $emailcheck //if the email exists it gives an error if ($result->num_rows != 0) { echo "Sorry, the email $email is already in use."; } // check to see if both passwords entered match if ($_POST['password'] != $_POST['confirmpassword']) { echo "Your passwords did not match. Please try again."; } // to encrypt the password $passhash = sha1($_POST['password']); // to make confirm_code $confirm_code = sha1($email); if ($result->num_rows == 0 && $_POST['password'] == $_POST['confirmpassword']) { $insert = "INSERT INTO useraccounts (confirm_code, email, username, passhash, firstname, lastname, gender, phone, address, userlevel, confirmed) VALUES ('$confirm_code', '$email', '$_POST[username]', '$passhash', '$_POST[firstname]', '$_POST[lastname]', '$_POST[gender]', '$_POST[phone]', '$_POST[address]', 'user', 'false')"; $add_member = $conn->query($insert); // executes query $insert (adds user to table) //send confirmation email if user is added to useraccounts if($add_member) { //send email to $to = $email; // $email = $_POST['email'] is present at top //email subject $subject = 'Registration Confirmation'; //email message $message = 'my message goes here'; $headers = 'From myname'; //send email $sentmail = mail($to,$subject,$message,$headers); //if email is sent if($sentmail){ echo "Your Confirmation link has been sent to your email address."; } else { echo "Cannot send Confirmation link to your email address."; // this statement is the output } // end if email is sent } else { echo "Cannot send Confirmation link to your email address."; } // end if member is added }
Любая помощь будет принята с благодарностью 🙂
$headers = 'From myname';
Это недопустимая строка заголовка. Должен быть:
$headers = 'From: myname';
Вероятно, это приводит к тому, что почтовый демон или сервер отклоняют сообщение как плохо сформированное.
Ваш почтовый сервер настроен как открытое реле? Вы пытаетесь отправить неавторизованное письмо. Большинство почтовых серверов этого не допускают.
Проверьте это .