使用PHPMailer发送由表单上传的附件

时间:2016-07-06 09:35:09

标签: php html phpmailer

我想从html表单(例如pdf文件)发送用户选择的附件文件,并通过电子邮件发送到目的地。

我可以通过邮件发送每个输入但附件,请你帮忙,任何帮助表示感谢。这是我的代码

 <label>Mail : </label>
    <input name="email" type="text" placeholder="mail adress">
    <div class="box">

    &nbsp;

    <input type="file" name="file" id="file" class="inputfile inputfile-5"  />
    </div>

我的form-handler.php(我只上传必要的行):

<?php

     $file = $_POST['file'];

     $email = $_POST['email'];

    require $_SERVER["DOCUMENT_ROOT"] . '/PHPMailer/PHPMailerAutoload.php';

        $mail = new PHPMailer;

        $mail->isSMTP();
        $mail->SMTPDebug  = 0;
        $mail->Debugoutput = 'html';
        $mail->Host = '*****';
        $mail->SMTPAuth = true;
        $mail->Username = '****';
        $mail->Password = '****';
        $mail->From = $email;
        $mail->SMTPSecure = 'tls';
        $mail->Port = ****;

        $mail->setFrom('*****', '*****');

        $mail->addAddress('*****', '*****');

        $mail->Subject = utf8_decode("Thank you for signing up");




        $mail->AddAttachment( $_FILES['file']['tmp_name'], $_FILES['file']['name'] );

        $mail->Body = ($file);

        //$mail->AltBody = utf8_decode($file);

        if (!$mail->Send()) {
            echo "error. <p>";
            echo "Mailer Error: " . $mail->ErrorInfo;
            exit;
        }

        echo "mail sent";

?>

1 个答案:

答案 0 :(得分:0)

在发送附件之前,您需要找到附件的位置。因此,当您上传文件时,您可以将其指定为在特定文件夹中上传。

move_uploaded_file($_FILES["file"]["tmp_name"],"./upload/" . $_FILES["file"]["name"]);

在这种情况下,我们在目录中创建了一个“upload”文件夹,并将文件保存在此目录中。 上传文件后,我们必须将路径保存在一个变量中。 这样就可以了。

$filename = "./upload/" . $_FILES["file"]["name"];

现在我们拥有了所需的一切,我们可以将该文件作为附件通过电子邮件发送。

$mail->AddAttachment($filename);

我希望这对你有所帮助。