pdf不作为附件发送

时间:2016-10-14 12:41:47

标签: php pdf phpmailer

我创建了一个php发送电子邮件脚本,通过php邮件发送pdf以及我发送电子邮件时附件无法作为附件发送附件文件已损坏,请查看我的代码并让我知道我在做什么错误为什么附件没有正确发送

这是我的HTML

<form method="POST" action="details.php?id=<?php echo $_GET['id']; ?>" enctype="multipart/form-data">
    <div class="col col_center">
        <input name="first_name" class="firstname text_input" type="text" placeholder="First Name">
    </div>
    <div class="col col_center">
        <input name="last_name" class="lastname text_input" type="text" placeholder="Last Name">
    </div>
    <div class="col col_center">
        <input name="email" class="email_address text_input" type="email" placeholder="Email Address">
    </div>
    <div class="col col_center">
        <input name="phone" class="phone text_input" type="tel" placeholder="Phone (with country code)">
    </div>
    <input type="hidden" name="title" value="<?php echo $dt['job_title']; ?>" />
    <div class="btn_row">
        <input type="file" value="Attach CV" class="button blue" name="resume" style="width:auto;">
    </div>
    <div class="btn_row">
        <input type="submit" value="Send" name="submit_resume" class="button" style="width:auto;">
    </div>
</form>

这是我的php文件

$path     = "./uploads/";
    $head     = $_FILES["resume"]["name"];
    $headtype = $_FILES["resume"]["type"];
    $headtemp = $_FILES["resume"]["tmp_name"];

    move_uploaded_file($headtemp, $path.$head);

 $mail = new PHPMailer;
    $client_email = $dt[3];
    $mail->setFrom('noreply@xpertius.com', 'No reply');
    $mail->addAddress("$client_email", 'Xpertius');
    $mail->Subject = "Thank You For Appling - '".$job_title."'";
    $mail->msgHTML($htmlbody);
    $uploadfile1 = tempnam(sys_get_temp_dir(), sha1($_FILES['resume']['name']));
    move_uploaded_file($_FILES['resume']['tmp_name'], $uploadfile1);
    $mail->addAttachment($uploadfile1, $head);

我还尝试将其保存到y数据库并且文件正在保存但没有发送,因为附加文件链接在电子邮件中被破坏

2 个答案:

答案 0 :(得分:2)

您尝试移动上传的文件:

move_uploaded_file($_FILES['resume']['tmp_name'], $uploadfile1);

但是你已经把它移进了:

move_uploaded_file($headtemp, $path.$head);

最有可能的是,您尝试附加的文件为空(已不再存在),请检查电子邮件中的大小,或者在附加之前检查它是否仍然存在。

因此,您应该将$ uploadfile1定义为:

$uploadfile1 = $path.$head;

代替你的第二个move_uploaded_file。

答案 1 :(得分:0)

试试这个

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

还要检查要移动文件的文件夹权限,该文件应该是可写的