PHP контактная форма отправляет, но не получает электронную почту - PullRequest
0 голосов
/ 03 июля 2018

Я создал контактную форму, используя PHP для отправки данных. Форма, кажется, отправляет нормально, так как нет ошибок и появляется сообщение об успехе, однако я не получаю электронные письма в указанный почтовый ящик.

Я использую PHPMailer, так как изначально пытался использовать команду php 'mail', которая, как я теперь понимаю, немного удалась.

Я не понимаю, почему я не буду получать электронные письма, поэтому буду очень благодарен за любую помощь, которая может быть оказана.

Я довольно новичок в PHP, поэтому, пожалуйста, будьте терпеливы со мной :)

<?php

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

$msg = "";

if (isset($_POST['submit'])) {
    require 'phpmailer/src/Exception.php';
    require 'phpmailer/src/PHPMailer.php';
    require 'phpmailer/src/SMTP.php';

    function sendemail ($to, $from, $body) {
        $mail = new PHPMailer(true);
        $mail->setFrom($from);
        $mail->addAddress($to);
        $mail->Subject = 'Contact Form - Email';
        $mail->Body = $body;
        $mail->IsHTML(false);

        return $mail->send();
    }

    $email = $_POST['email'];
    $subject = $_POST['subject'];
    $body = $_POST['body'];

    if (sendemail('gareth.langley1@gmail.com', $email, $subject, $body)) {
        $msg = 'Email has been sent, thank you!';
    } else 
        $msg = 'Email failed, please try again later';       

}

?>

<title>Test Contact Form Using PHPMailer</title>

<body>

    <div id="contactInnerWrapper">
        <a href="#"><span id="close">&times;</span></a>
        <h1 id="h1contactForm">Get in touch</h1>
            <form method="post" action="index.php">
                <label for="email">Email address:</label><br>
                <input  type="email" name="email"  placeholder="Enter email" id="email">
                <label for="subject">Subject:</label>
                <input  type="text" name="subject" id="subject"><br>
                <label for="body">What would you like to ask us?</label><br>
                <textarea  type="text" name="body" rows="7" id="content"></textarea>
                <button type="submit" name="submit" id="submit">Submit</button>
            </form>
            <br><br>
            <?php echo $msg; ?>
    </div>


</body>

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Скорее всего, на вашем сервере не установлен почтовый транспортный агент (MTA), но он не настроен должным образом. Примеры MTA для Linux: sendmail, postfix, exim4, qmail.

Установка и настройка MTA могут стать сложными.

Можете ли вы отправлять электронные письма из командной строки на том же сервере?

0 голосов
/ 03 июля 2018

Вы передаете 4 параметра функции, которой требуется только 3.

function sendemail ($to, $from, $body)

sendemail('gareth.langley1@gmail.com', $email, $subject, $body)

Попробуйте редактировать так:

if (sendemail('gareth.langley1@gmail.com', $email, $body)) {
    $msg = 'Email has been sent, thank you!';
} else 
    $msg = 'Email failed, please try again later';       
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...