如何在PHP电子邮件表单中获取附件?

时间:2017-07-20 17:18:05

标签: php forms email email-attachments

我在网页上有一个简单的表单。我希望填写表单的人能够上传文件。然后我希望通过电子邮件将邮件和附件发送给我。我好几天都在玩很多代码,但是找不到任何对我有用的东西。

我目前的代码:

<?php

    if ($_SERVER['REQUEST_METHOD'] == 'POST'){

        $flags = 'style="display:none;"';
        $message = $_POST['message'];
      $email="me@me.com";
        $to = "someone@somewhere.com";
        $subject = "test Message with attachment";

        $attachment = chunk_split(base64_encode(file_get_contents($_FILES['file']['uploaded_file'])));
        $filename = $_FILES['file']['uploaded_file'];

        $boundary =md5(date('r', time())); 

$headers  = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=utf-8" . "\r\n";
$headers .= "From: ".$email."\r\n";  
$headers .= "Reply-To: ".$email."\r\n" .

 $mail_sent = @mail($to, $subject, $message, $headers);  
 //if the message is sent successfully print "Mail sent". Otherwise print "Mail failed" 
 echo $mail_sent ? "Mail sent" : "Mail failed";
 exit();

    } // end of what happens if form submitted
else{
?>
<!-- end of form processing-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test e-mail attachment form</title>
</head>
<body>

<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" <?php echo $flags;?>>
    <input type="hidden" name="status" value="sent">
    <table >
    <tr>
        <td>
            Message:
        </td>
        <td>
             <input type="text" name="message" size="20" required>
        </td>
    </tr>


    <tr>
        <td>
            Attach a file: 
        </td>
        <td>

<input type="file" name="uploaded_file">
                </td>
    </tr>
        <tr>
        <td colspan="2">
            <input type="submit" value="Send message">
        </td>
    </tr>
</table>

</form>

</body>
</html>
<?php
}
?>

消息通过确定,但没有附件。我尝试了很多不同的方法,包括在这里发现的一对,比如[Simple PHP form: Attachment to email (code golf),但是无法得到我想要的。

我也尝试过在{http://form.guide/email-form/php-email-form-attachment.html][1]找到的东西,但这涉及到安装PEAR。我确实尝试了,但后来发现它已经覆盖了我的主页,所以我不得不卸载它,因为它看起来太复杂了,而且对于我需要的东西来说太过分了。

我确信我必须在某处接近工作,但看不出有什么问题。

1 个答案:

答案 0 :(得分:-1)

我建议您使用PHPMailer库。
您可能希望使用send_file_upload示例 此外,列出了很多示例here.

因此,您的代码可能会被重写为:

f

P.S。使用这些库将为您提供更灵活和更有效的代码 仅仅因为它们形成了所有必需的标题并提供了简单的OOP接口。