Отправка почты с помощью SMTP PHP phpmailer

Я хочу иметь возможность отправлять почту на свой адрес электронной почты всякий раз, когда я заполняю и отправляю свою контактную форму. Я следовал руководству о том, как это сделать, но, к сожалению, он не отправляет почту в почтовый ящик. Каждый раз, когда я отправляю форму, она возвращает сообщение об ошибке «Произошла ошибка». Кто-нибудь может проверить этот код, чтобы выяснить, в чем может быть проблема?

Вот код PHP

        <?php
            //index.php

            $error = '';
            $name = '';
            $email = '';
            $subject = '';
            $message = '';

            function clean_text($string)
            {
            $string = trim($string);
            $string = stripslashes($string);
            $string = htmlspecialchars($string);
            return $string;
            }

            if (isset($_POST["submit"]))
            {
            if (empty($_POST["name"]))
            {
                $error .= '<p><label class = "text-danger">Please Enter your Name</label></p>';
            }
            else
            {
                $name = clean_text($_POST["name"]);
                if (!preg_match("/^[a-zA-Z ]*$/",$name))
                {
                    $error .= '<p><label class = "text-danger">Only letters and white space allowed</label></p>';
                }
            }
            if (empty($_POST["email"]))
            {
                $error .= '<p><label class = "text-danger">Please Enter your Email</label></p>';
            }
            else
            {
                $email = clean_text($_POST["email"]);
                if (!filter_var($email, FILTER_VALIDATE_EMAIL))
                {
                    $error .= '<p><label class = "text-danger">Invalid email format</label></p>';
                }
            }
            if (empty($_POST["subject"]))
            {
                $error .= '<p><label class = "text-danger">Subject is required</label></p>';
            }
            else
            {
                $subject = clean_text($_POST["subject"]);
            }
            if (empty($_POST["message"]))
            {
                $error .= '<p><label class = "text-danger">Message is required</label></p>';
            }
            else
            {
                $message = clean_text($_POST["message"]);
            }
            if ($error == '')
            {
                require 'class/class.phpmailer.php';
                $mail = new PHPMailer;
                $mail->IsSMTP();                                //Sets Mailer to send message using SMTP
                $mail->Host = 'kwchems.com';        //Sets the SMTP hosts of your Email hosting, this for Godaddy
                $mail->Port = '465';                                //Sets the default SMTP server port
                $mail->SMTPAuth = true;                         //Sets SMTP authentication. Utilizes the Username and Password variables
                $mail->Username = '[email protected]';                   //Sets SMTP username
                $mail->Password = 'txpxbaron45';                    //Sets SMTP password
                $mail->SMTPSecure = 'tls';                          //Sets connection prefix. Options are "", "ssl" or "tls"
                $mail->From = $_POST["email"];                  //Sets the From email address for the message
                $mail->FromName = $_POST["name"];               //Sets the From name of the message
                $mail->AddAddress('[email protected]', 'Name');      //Adds a "To" address
                $mail->AddCC($_POST["email"], $_POST["name"]);  //Adds a "Cc" address
                $mail->WordWrap = 50;                           //Sets word wrapping on the body of the message to a given number of characters
                $mail->IsHTML(true);                            //Sets message type to HTML             
                $mail->Subject = $_POST["subject"];             //Sets the Subject of the message
                $mail->Body = $_POST["message"];                //An HTML or plain text message body
                if ($mail->Send())                               //Send an Email. Return true on success or false on error
                {
                    $error = '<label class = "text-success">Thank you for contacting us</label>';
                }
                else
                {
                    $error = '<label class = "text-danger">There is an Error</label>';
                }
                $name = '';
                $email = '';
                $subject = '';
                $message = '';
            }
            }

    ?>

Вот моя форма

<div class = "contact-form">
                <?php echo $error; ?>

        <h2>Contact Us (* Required Field)</h2>

            <form method = "post" action = "<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
                <div>
                    <span><label>Your name*</label></span>
                    <span><input type = "text" name = "name"  value = "<?php echo $name; ?>" style = " padding:8px; border-radius:5px;"></span>
                </div>
                <div>
                    <span><label>Your email*</label></span>
                    <span><input type = "text" name = "email" value = "<?php echo $email; ?>" style = " padding:8px; border-radius:5px;"></span>
                </div>
                <div>
                    <span><label>Company:</label></span>
                    <span><input type = "text" name = "company" value = "<?php echo $company; ?>" style = " padding:8px; border-radius:5px;"</span>
                </div>
                <div>
                    <span><label>Country*:</label></span>
                    <span><input type = "text" name = "country" value = "<?php echo $country; ?>" style = " padding:8px; border-radius:5px;"</span>
                </div>

                <div>
                    <span><label>Phone:</label></span>
                    <span><input type = "text" name = "phone" value = "<?php echo $phone; ?>"  style = " padding:8px; border-radius:5px;"</span>
                </div>
                <div>
                    <span><label>SUBJECT*</label></span>
                    <span><input type = "text" name = "subject" value = "<?php echo $subject; ?>" style = " padding:8px; border-radius:5px;"</span>
                </div>
                <div>
                    <span><label>Type Your Message Please*</label></span>
                    <span><textarea name = "message"> <?php echo $message; ?></textarea></span>
                </div>
               <div>
                    <span><input type = "submit" name = "submit" value = "Send"></span>
              </div>
            </form>


      </div>

Отобразите содержимое $mail->ErrorInfo после сбоя отправки, как это делают примеры кода. Также похоже, что вы основывали свой код на устаревшем примере, поэтому убедитесь, что у вас установлена ​​последняя версия PHPMailer.

Synchro 31.03.2018 22:18
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
809
1

Ответы 1

Пожалуйста, измените эту строку.

$mail = new PHPMailer;

К:

$mail = new PHPMailer(true);

Поместите код в блок try and catch как:

try {

 require 'class/class.phpmailer.php';
            $mail = new PHPMailer;
            $mail->IsSMTP();                                //Sets Mailer to send message using SMTP
            $mail->Host = 'kwchems.com';        //Sets the SMTP hosts of your Email hosting, this for Godaddy
            $mail->Port = '465';                                //Sets the default SMTP server port
            $mail->SMTPAuth = true;                         //Sets SMTP authentication. Utilizes the Username and Password variables
            $mail->Username = '[email protected]';                   //Sets SMTP username
            $mail->Password = 'txpxbaron45';                    //Sets SMTP password
            $mail->SMTPSecure = 'tls';                          //Sets connection prefix. Options are "", "ssl" or "tls"
            $mail->From = $_POST["email"];                  //Sets the From email address for the message
            $mail->FromName = $_POST["name"];               //Sets the From name of the message
            $mail->AddAddress('[email protected]', 'Name');      //Adds a "To" address
            $mail->AddCC($_POST["email"], $_POST["name"]);  //Adds a "Cc" address
            $mail->WordWrap = 50;                           //Sets word wrapping on the body of the message to a given number of characters
            $mail->IsHTML(true);                            //Sets message type to HTML             
            $mail->Subject = $_POST["subject"];             //Sets the Subject of the message
            $mail->Body = $_POST["message"];                //An HTML or plain text message body
            if ($mail->Send())                               //Send an Email. Return true on success or false on error
            {
                $error = '<label class = "text-success">Thank you for contacting us</label>';
            }
            else
            {
                $error = '<label class = "text-danger">There is an Error</label>';
            }
            $name = '';
            $email = '';
            $subject = '';
            $message = '';

} catch (phpmailerException $e) {
  echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
  echo $e->getMessage(); //Boring error messages from anything else!
}

Параметр правда означает, что он будет генерировать исключения при ошибках, которые нам нужно перехватывать.

Спасибо за ваш ответ. Я просто попробовал это, но, к сожалению, он загрузит страницу и вернет HTTP ERROR 500.

Douggy Budget 31.03.2018 20:40

PHPMailer использует исключения.

Gufran Hasan 31.03.2018 20:46

пожалуйста, удалите if и else, тогда это будет фактическая ошибка.

Gufran Hasan 31.03.2018 20:57

если и еще до попытки?

Douggy Budget 31.03.2018 21:02

Это не ответ.

Synchro 31.03.2018 22:16

Другие вопросы по теме