Как отправить почтой содержимое файла, полученного через input type="file"?
Столкнулся с такой проблемой: нужно отправить содержимое файла, загруженного через форму, на определённый почтовый адрес. Сделал кучу попыток, но так ни к чему и не пришёл. Максимум, что я мог сделать:
<html>
<body>
<form method="POST">
<input type="file" name="qq">
<input type="submit">
</form>
<?php
if (!empty($_FILES['qq']) && !$_FILES['qq']['error']) {
require 'PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->addAddress('[email protected]', 'John Doe');
$mail->Subject = 'PHPMailer file sender';
$mail->msgHTML("My message body");
$mail->addAttachment($_FILES['qq']);
$r = $mail->send();
}
?>
</body>
</html>
Буду благодарен, если поможете!
Ответы (1 шт):
Автор решения: HardlinePeak
→ Ссылка
Честно признаюсь, не проверял, но скорее всего это должно работать:
<html>
<!-- 1.Вы не установили "multipart/form-data" для "enctype" -->
<form method="post" enctype="multipart/form-data">
<input type="file" name="test_file">
<input type="submit" name="submit" value="Отправить">
</form>
</html>
<?php
if (isset($_POST["submit"])) {
/* 2.Предлагаю использовать is_uploaded_file для проверки */
if (!is_uploaded_file($_FILES["test_file"]["tmp_name"]))
exit();
require "PHPMailerAutoload.php";
$mail = new PHPMailer();
$mail->addAddress("[email protected]", "Ivan Ivanov");
$mail->Subject = "PHPMailer file sender";
$mail->msgHTML("Test message.");
/* 3.Нужно использовать "tmp_name" */
$mail->addAttachment($_FILES["test_file"]["tmp_name"]);
$result = $mail->send();
}