PHPMailer附件类型和大小限制

时间:2012-06-08 10:34:46

标签: php phpmailer

我有一个表单,我正在使用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);

}

2 个答案:

答案 0 :(得分: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没有内置的可能性 - 正如您从源代码中看到的那样,它只会在添加附件时检查文件是否存在:

if ( !@is_file($path) ) {
  throw new phpmailerException($this->Lang('file_access') . $path, self::STOP_CONTINUE);
}

答案 1 :(得分:0)

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