Использование swiftmailer и отправка вложений

Я пытаюсь изменить сценарий для отправки электронной почты с вложением. Он работает прямо сейчас, но все поля требуются, и мне было интересно, чего мне не хватает, чтобы сделать это так, чтобы поля не требовались.

<?php if (($_POST)) { $success = $error = false; $post = new stdClass; foreach ($_POST as $key => $val) $post->$key = trim(strip_tags($_POST[$key])); $dir = dirname(__FILE__); ob_start(); require_once($dir.'/html.php'); $html_message = ob_get_contents(); ob_end_clean(); require_once($dir.'/swift/swift_required.php'); $mailer = new Swift_Mailer(new Swift_MailTransport()); $message = Swift_Message::newInstance() ->setSubject('Imperial Order') // Message subject ->setTo(array($post->email => $post->name, 'ehilse@paifashion.com' => 'Janet McCauley')) // Array of people to send to ->setFrom(array('noreply@paifashion.com' => 'Imperial Order')) ->setBody($html_message, 'text/html') // Attach that HTML message from earlier ->attach(Swift_Attachment::fromPath($_FILES['attachment']['tmp_name'])->setFilename($_FILES['attachment']['name'])); // Send the email, and show user message if ($mailer->send($message)) $success = true; else $error = true; } ?> 

Я считаю, что это имеет какое-то отношение к foreach, но если я попытаюсь это вынуть, это сломает весь код. Если кто-то может помочь, это будет здорово. Причина, по которой я беру подтверждение, – это то, что я хочу сделать это на стороне клиента, а не на стороне сервера.

вы можете удалить их для каждого, но тогда вам придется запрашивать каждое опубликованное поле индивидуально и обрабатывать / проверять их по одному, а не в цикле, поскольку цикл вытягивает все столбцы в локальные вары.

Кроме того, вам не нужно требовать, чтобы быстрая почта включала и т. Д. Внутри цикла они могут быть перемещены за пределы цикла, а также $ mailer = новая стартовая линия переноса, которая может выйти за пределы цикла

ИЗМЕНИТЬ С ПРИМЕРОМ

 if (isset($_POST)) { //BAD BAD BAD way of checking there's better ways $success = $error = false; $input1 = $_POST['input1']; $input2 = $_POST['input2']; $input3 = $_POST['input3']; $input4 = $_POST['input4']; $dir = dirname(__FILE__); // THIS BIT IS RETARDED BUT LEAVING IT IN FOR NOW ob_start(); require_once($dir.'/html.php'); $html_message = ob_get_contents(); ob_end_clean(); // END RETARDED BIT require_once($dir.'/swift/swift_required.php'); $mailer = new Swift_Mailer(new Swift_MailTransport()); if (isset($_FILES) && strlen($_FILES['attachment']['name']) > 0) { //here we're checking that there is attachments if there are then we're going to do the attach sw code $message = Swift_Message::newInstance() ->setSubject('Imperial Order') // Message subject ->setTo(array($input1 => $input2, 'ehilse@paifashion.com' => 'Janet McCauley')) // Array of people to send to ->setFrom(array('noreply@paifashion.com' => 'Imperial Order')) ->setBody($html_message, 'text/html') // Attach that HTML message from earlier ->attach(Swift_Attachment::fromPath($_FILES['attachment']['tmp_name'])->setFilename($_FILES['attachment']['name'])); } else { //non attach sw code $message = Swift_Message::newInstance() ->setSubject('Imperial Order') // Message subject ->setTo(array($input1 => $input2, 'ehilse@paifashion.com' => 'Janet McCauley')) // Array of people to send to ->setFrom(array('noreply@paifashion.com' => 'Imperial Order')) ->setBody($html_message, 'text/html') // Attach that HTML message from earlier } //there's better ways of doing the above but as an example this will suffice. // Send the email, and show user message if ($mailer->send($message)) { $success = true; } else { $error = true; } } ?>