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