PHP电子邮件附件文件

PHP电子邮件附件文件,php,email-attachments,contact-form,Php,Email Attachments,Contact Form,我最终为一个联系人表单创建了这段代码,但我希望缺少一件事,即最大大小为5MB,如果$file_size>5000000,则尝试使用if函数时,{$fileErr=max allowed size为5MB;}否则{$check6=1;}但是它不起作用,代码也不起作用,但是如果我删除这个函数,其他所有的功能都会很好,所以有任何帮助,当我解决这个问题时,我会在这里添加代码,这样每个人都可以从中受益。。。。下面是代码 无标题文件 您的条件是正确的,代码也工作正常。请重新检查。试试PHPMailer,我

我最终为一个联系人表单创建了这段代码,但我希望缺少一件事,即最大大小为5MB,如果$file_size>5000000,则尝试使用if函数时,{$fileErr=max allowed size为5MB;}否则{$check6=1;}但是它不起作用,代码也不起作用,但是如果我删除这个函数,其他所有的功能都会很好,所以有任何帮助,当我解决这个问题时,我会在这里添加代码,这样每个人都可以从中受益。。。。下面是代码

无标题文件
您的条件是正确的,代码也工作正常。请重新检查。

试试PHPMailer,我正在使用它,不会有问题

<?php
/**
 * PHPMailer simple file upload and send example
 */
$msg = '';
if (array_key_exists('userfile', $_FILES)) {
    // First handle the upload
    // Don't trust provided filename - same goes for MIME types
    // See http://php.net/manual/en/features.file-upload.php#114004 for more thorough upload validation
    $uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['userfile']['name']));
    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
        // Upload handled successfully
        // Now create a message
        // This should be somewhere in your include_path
        require '../PHPMailerAutoload.php';
        $mail = new PHPMailer;
        $mail->setFrom('from@example.com', 'First Last');
        $mail->addAddress('whoto@example.com', 'John Doe');
        $mail->Subject = 'PHPMailer file sender';
        $mail->Body = 'My message body';
        // Attach the uploaded file
        $mail->addAttachment($uploadfile, 'My uploaded file');
        if (!$mail->send()) {
            $msg .= "Mailer Error: " . $mail->ErrorInfo;
        } else {
            $msg .= "Message sent!";
        }
    } else {
        $msg .= 'Failed to move file to ' . $uploadfile;
    }
}
?>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>PHPMailer Upload</title>
</head>
<body>
<?php if (empty($msg)) { ?>
    <form method="post" enctype="multipart/form-data">
        <input type="hidden" name="MAX_FILE_SIZE" value="100000"> Send this file: <input name="userfile" type="file">
        <input type="submit" value="Send File">
    </form>
<?php } else {
    echo $msg;
} ?>
</body>
</html>

当allowedExtensions为true时,您已将$check5设置为1。在它旁边,检查文件大小。当文件大小>5MB时,check5未重置或更改。所以,如果您的附件是正确的&文件大小>5mb,系统将尝试发送带有附件的电子邮件,您不希望附件为check5==1。因此,当文件大小>5MB时,需要将check5设置为0才能停止


请更新您的代码,如:

if($file_size > 5000000){
       $fileErr .= "Max allowed size is 5 MB";
} else {
        $check6 = 1;
        array_push($files,$file);
 }

希望这是清楚的

一些合理的代码缩进将是一个好主意。它帮助我们阅读代码,更重要的是,它将帮助您为自己的利益调试代码。您可能会被要求在几周/几个月内修改此代码,最终您将感谢我。您正在使用$check5进行两个不同的测试。第一个设置了它,但当它失败时,您的大小检查不会取消设置。请更新您的代码。如果您在代码中添加了die,您将永远无法访问HTML,在HTML中输出错误消息scheck php.ini,并将upload_max_filesize=2M设置为适当的值。它工作正常,除非仅在文件大小大于5 mb时显示消息,但除非文件大小小于5 mb,否则它不会提交消息,但没有错误消息显示我第二次更改$check5到$check6,结果仍然相同。如果大小大于5 mb,邮件也不会发送,但问题是我没有收到错误消息。请将数组放入其他部分,如:`if$file\u size>5000000{$fileErr=允许的最大大小为5 mb;}其他{$check5=1;数组_push$files,$file;}`我更新了它,但仍然是相同的错误…问题是它没有提交电子邮件,因为文件大小大于5 mb,但它没有显示任何文件大小大于5 mb的消息,可能是因为我为$check5和$check6定义了相同的$fileErr?你的帖子的最大大小和上载的最大大小是多少?如果上载的文件大小>上载的最大大小文件大小,则$file\u size=0。因此它将不会进入该条件。有关详细信息,请同时查看错误日志。这意味着您的更改未保存。您还需要更新post\u max\u size。post\u max\u size必须大于upload\u max\u filesize。更新该值后是否重新启动服务器?