1

我有一个表格,我正在使用 PHPMailer 将该表格中的数据发送到我的电子邮件。用户也可以发送附件,但我有一个问题:如何让 PHPMailer 拒绝大于 2Mb 的附件并只允许 iamge 附件(不允许其他类型的文档)?

这是我使用 PHPMailer 来增加电子邮件附件的代码:

foreach(array_keys($_FILES['fileAttach']['name']) as $key) {

   $source = $_FILES['fileAttach']['tmp_name'][$key]; 
   $filename = $_FILES['fileAttach']['name'][$key]; 

   $mail->AddAttachment($source, $filename);

}
4

2 回答 2

6

您可以使用检查文件大小filesize()和使用类型mime_content_type()

生成的代码可能如下所示:

$maxsize = 2 * 1024 * 1024; // 2 MB
$types = array('image/png', 'image/jpeg', 'image/gif'); // allowed mime-types

if(filesize($filename) < $maxsize && in_array(mime_content_type($filename),$types)){
  $mail->AddAttachment($source, $filename);
}

编辑: PHPMailer 没有内置的这些 chacks 可能性 - 正如您从源代码中看到的那样,它仅在添加附件时检查文件是否存在:

if ( !@is_file($path) ) {
  throw new phpmailerException($this->Lang('file_access') . $path, self::STOP_CONTINUE);
}
于 2012-06-08T10:37:57.200 回答
0

使用filesize()检查文件大小。要检查文件是否为图像,请使用getimagesize()如果它不是图像则返回 false,否则它将返回一个包含 mimetype 的信息数组(如果您不想检查特定的图像类型)。

于 2012-06-08T12:56:20.960 回答