Возникли трудности с запуском phpmailer для отправки электронного письма с вложением при отправке формы загрузки html - PullRequest
0 голосов
/ 16 июня 2020

Всем доброе утро

Я добавляю простую форму загрузки файла резюме на целевую страницу, которую я создал некоторое время назад. Я хочу, чтобы при отправке формы содержимое, включая загруженный файл (в любом формате), отправлялось по электронной почте на выбранный адрес электронной почты. В нынешнем виде я скачал composer и использовал его для установки PHPMailer. У меня есть файлы composer .lock, composer. json (который имеет требуемый блок кода phpmailer) и composer .phar файлы в моем каталоге root для проекта.

Итак когда я отправляю форму загрузки, я получаю пустую страницу. Мне даже не выдается эхо-ошибка, которую я прошу показать мне, если была проблема с отправкой почты. Что должно произойти, так это то, что форма будет заполнена, файл загружен и отправлен. Затем должна появиться страница с благодарностью пользователю за загрузку его резюме, и, конечно же, электронное письмо со всей информацией и вложением появится во входящих.

Вот код для формы загрузки -

<section id="upload">
    <div>
      <h2>Upload your CV:</h2>
    </div>
    <div id="uploadText">
      <form action="toemail.php" method="POST" id="uploadform" enctype="multipart/form-data">
        <label for="name" id="labelName">Name:</label> <br>
        <input type="text" name="fullName" id="name" required>
        <select id="typeofjob" name="jobpreference" required>
          <option value="choose" selected disabled>--Choose Area of Expertise--</option>
          <option value="Front of house">Front of House</option>
          <option value="Back of house">Back of House</option>
        </select>
        <input type="file" id="filetoupload" name="file" required>
        <button type="submit" name="upload_button" id="uploadbtn">Upload CV</button>
      </form>
    </div>
  </section>

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

<?php

// using Composer to dounwload PHP Mailer and PHP Mailer to attach the uploaded file to a sent email

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


    if(isset($_POST['upload_button'])){

        require 'phpmailer/phpmailerAutoload.php';
        require 'vendor/autoload.php';

        $mail = new PHPMailer();

        $name = $_POST['fullName'];
        $preference = $_POST['jobpreference'];
        $filename = $_FILES['file']['name'];
        $file = $_FILES['file']['tmp_name'];
// $destination = 'uploads/'. $filename;
// $extension = pathinfo($filename,PATHINFO_EXTENSION);
// $size = $_FILES['file']['size'];

        $mail->isSMTP();
        $mail->Host = 'smtp.gmail.com'; // Your Domain Name
        $mail->SMTPAuth = true;
        $mail->Port = 587;
        $mail->SMTPSecure = 'tls';
        $mail->Username = "____@gmaill.com"; // Your Email ID
        $mail->Password = "___"; // Password of your email id

        $mail->setFrom = "noreply@yourdomain.com";
        $mail->FromName = "___";
        $mail->AddAddress ("___"); // On which email id you want to get the message

        $mail->addAttachment($file,$filename); //This line Use to Keep User Txt,Doc,pdf file ,attachment

        $mail->IsHTML(true);
        $mail->Subject = "Uploaded CV by $name"; // This is your subject

        // HTML Message Starts here

        $mail->Body = "
        <html>
            <body>
                <table style='width:600px;'>
                    <tbody>
                        <tr>
                            <td style='width:150px'><strong>Name: </strong></td>
                            <td style='width:400px'>$name</td>
                        </tr>
                        <tr>
                            <td style='width:150px'><strong>Email ID: </strong></td>
                            <td style='width:400px'>$preference</td>
                        </tr>
                    </tbody>
                </table>
            </body>
        </html>
        ";
        // HTML Message Ends here


        if(!$mail->send())
            {
            echo "Error";
            }
        else
            {
                header('location:thanksforcv.html');
            }

}

?>

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 16 июня 2020

Пустая страница обычно означает фатальную ошибку PHP, поэтому вам следует проверить журнал ошибок вашего веб-сервера для получения дополнительных сведений. Скорее всего, у вас проблема с этой строкой:

require 'phpmailer/phpmailerAutoload.php';

Этого файла не было в PHPMailer последние 3 года, поэтому это приведет к фатальной ошибке; Вероятно, это результат копирования и вставки старого кода отсюда в Stack Overflow. Если вы сомневаетесь в правильности кода, всегда получите совет прямо из источника .

...