难以让phpmailer在发送html上传表单时发送一封带有附件的电子邮件

时间:2020-06-16 06:33:19

标签: php composer-php phpmailer

早上全部

我正在将一个简单的CV文件上传表单功能添加到我不久前建立的登录页面中。我想要这样,以便在提交表单时,将内容(包括上载的文件)(任何格式)以电子邮件的形式发送到选定的电子邮件地址。就目前而言,我已经下载了composer并用它来安装PHPMailer。我在项目的根目录中有composer.lock,composer.json(具有require phpmailer代码块)和composer.phar文件。

到目前为止,当我提交上传表单时,我得到一个空白页。我什至没有收到回声“错误”,我要求它向我显示发送邮件是否存在问题。应该发生的是填写表格,上传并提交文件。然后,将出现一个感谢页面,感谢用户上传他们的简历,当然,电子邮件将显示在收件箱中,其中包含所有信息和附件。

这是上传表单的代码-

<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 :(得分:0)

空白页通常意味着致命的PHP错误,因此您应检查Web服务器的错误日志以获取更多详细信息。您最有可能在此行上遇到问题:

require 'phpmailer/phpmailerAutoload.php';

该文件在最近3年中没有出现在PHPMailer中,因此将导致致命错误;这可能是由于从此处复制并粘贴旧代码到Stack Overflow上的结果。如果您对代码是否正确存有疑问,请始终直接从the source获得建议。

相关问题