PHP-带有附件提交的联系表-file_get_contents():文件名不能为空

时间:2019-01-18 10:56:46

标签: php forms phpmailer contacts

我一直在制作带有附件选项的联系表,但是当我尝试它时,我收到了此消息

  

“警告:file_get_contents():文件名不能为空    第26行上的sample-name.php

     

无法发送邮件。”

我该如何解决?

这是我的HTML代码:

<body>

    <form action="php_sendmail_upload.php" method="post" name="form1" enctype="multipart/form-data">
        <table width="343" border="1">
            <tr>
            <td>To</td>
            <td><input name="txtTo" type="text" id="txtTo"></td>
            </tr>
            <tr>
            <td>Subject</td>
            <td><input name="txtSubject" type="text" id="txtSubject"></td>
            </tr>
            <tr>
            <td>Description</td>
            <td><textarea name="txtDescription" cols="30" rows="4" id="txtDescription"></textarea></td>
            </tr>
            <tr>
            <td>Form Name</td>
            <td><input name="txtFormName" type="text"></td>
            </tr>
            <tr>
            <tr>
            <td>Form Email</td>
            <td><input name="txtFormEmail" type="text"></td>
            </tr>
            <tr>
            <td>Attachment</td>
            <td><input name="fileAttach" type="file"></td>
            </tr>
            <tr>
            <td>&nbsp;</td>
            <td><input type="submit" name="Submit" value="Send"></td>
            </tr>
        </table>
    </form>

</body>

这是我的PHP代码(php_sendmail_upload.php):

<?php
// $strTo = $_POST["txtTo"];
$strTo = "philip.santiago@yr.com";
$strSubject = "Email attach subject";
$strMessage = nl2br($_POST["txtDescription"]);

//*** Uniqid Session ***//
$strSid = md5(uniqid(time()));

$strHeader = "";
$strHeader .= "From: ".$_POST["txtFormName"]."<".$_POST["txtFormEmail"].">\nReply-To: ".$_POST["txtFormEmail"]."";

$strHeader .= "MIME-Version: 1.0\n";
$strHeader .= "Content-Type: multipart/mixed; boundary=\"".$strSid."\"\n\n";
$strHeader .= "This is a multi-part message in MIME format.\n";

$strHeader .= "--".$strSid."\n";
$strHeader .= "Content-type: text/html; charset=utf-8\n";
$strHeader .= "Content-Transfer-Encoding: 7bit\n\n";
$strHeader .= $strMessage."\n\n";

//*** Attachment ***//
if($_FILES["fileAttach"]["name"] != "")
{
$strFilesName = $_FILES["fileAttach"]["name"];
// THE LINE BELOW SEEMS TO BE CAUSING THE ERROR //
$strContent = chunk_split(base64_encode(file_get_contents($_FILES["fileAttach"]["tmp_name"])));

$strHeader .= "--".$strSid."\n";
$strHeader .= "Content-Type: application/octet-stream; name=\"".$strFilesName."\"\n";
$strHeader .= "Content-Transfer-Encoding: base64\n";
$strHeader .= "Content-Disposition: attachment; filename=\"".$strFilesName."\"\n\n";
$strHeader .= $strContent."\n\n";
}

$flgSend = @mail($strTo,$strSubject,null,$strHeader);  // @ = No Show Error //

if($flgSend)
{
echo "Mail send completed.";
}
else
{
echo "Cannot send mail.";
}
?>

先谢谢您! :)

0 个答案:

没有答案
相关问题