[英]PHPMailer sanitizing multiple attachments
我試圖限制文件大小和phpmailer處理的附件類型。 這篇文章中的答案不能解決多個附件的問題。 問題似乎是帶有[]的表單輸入名稱,該名稱將表單輸入轉換為數組。 我無法編寫正確的語法。
HTML是:
<input type="file" multiple="multiple" name="attach_file[]" />
PHP是:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'src/Exception.php';
require 'src/PHPMailer.php';
$name = $_POST['name'];
$mail = new PHPMailer(true);
try {
$mail->setFrom('abc@abc.org', 'abc');
$mail->addAddress('xyz@xyz.com', 'xyz');
// Attachments
foreach(array_keys($_FILES['attach_file']['name']) as $key) {
$source = $_FILES['attach_file']['tmp_name'][$key];
$filename = $_FILES['attach_file']['name'][$key];
$mail->AddAttachment($source, $filename);
}
$mail->isHTML(true);
$mail->Subject = 'Case History';
$mail->Body = $name;
$mail->send();
echo 'Message has been sent';
}
catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
如果在foreach循環中,我將使用以下代碼:
$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);
}
我得到這些錯誤:
輸入名稱用於多個附件時,寫入IF條件的正確方法是什么。 謝謝。
您應該注意, $filename
只是已上傳文件的原始名稱(例如photo.jpg
)-但已上傳文件的文件系統路徑名實際上是$source
(始終是一些隨機文件名,位於OS temp文件夾中) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.