Всем привет, помогите, пожалуйста, нашел статью, как сделать форму с полями и прикреплением файла, сделал все по инструкции, но письма не отправляются. Была задача: Сделать форму с именем телефоном и возможностью прикрепить файлы, дальше чтобы эти данные отправлялись с сайта на почту админа сайта. Снизу приложил код что получилось. Прошу помочь. Заранее спасибо
$(function(){
‘use strict’;
$(‘#form’).on(‘submit’, function(e){
e.preventDefault();
var fd = new FormData( this );
$.ajax({
url: ‘send.php’,
type: ‘POST’,
contentType: false,
processData: false,
data: fd,
success: function(msg){
if(msg == ‘ok’) {
$(“.button”).val(“Отправлено”);
} else {
$(“.button”).val(“Ошибка”);
setTimeout(function() {$(“.button”).val(“Отправить”);}, 3000);
}
}
});
});
});
<form action="send.php" enctype="multipart/form-data" method="post" id="form">
<h1>Запись на консультацию</h1>
<input type="text" name="name" required placeholder="Введите Ваше имя">
<input name=”number” type=”text” required placeholder="Введите Ваш телефон">
<input placeholder=”example@mail.com” name=”email” type=”text” required>
<label for="fileFF">Загрузите файл</label>
<input type="file" name="userfile[]" multiple id="userfile" required>
<br>
<input value="Отправить" type="submit" name="submit">
<a href="#" class="close">Закрыть</a>
</form>
И PHP
<?php
// Файлы phpmailer
require ‘phpmailer.php’;
require ‘smtp.php’;
// Переменные
$name = $_POST[‘name’];
$number = $_POST[‘number’];
$email = $_POST[‘email’];
// Настройки
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = ‘smtp.yandex.ru’;
$mail->SMTPAuth = true;
$mail->Username = ‘rumyantsev.pavel2017; // Ваш логин в Яндексе. Именно логин, без @yandex.ru
$mail->Password = ‘GFIFGFIF2002’; // Ваш пароль
$mail->SMTPSecure = ‘ssl’;
$mail->Port = 465;
$mail->setFrom(‘rumyantsev.pavel2017@yandex.ru’); // Ваш Email
$mail->addAddress(‘rumyantsev.pavel2017@yandex.ru’’); // Email получателя
$mail->addAddress(‘rumyantsev.pavel2017@yandex.ru’’); // Еще один email, если нужно.
// Прикрепление файлов
for ($ct = 0; $ct < count($_FILES[‘userfile’][‘tmp_name’]); $ct++) {
$uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES[‘userfile’][‘name’] [$ct]));
$filename = $_FILES[‘userfile’][‘name’][$ct];
if (move_uploaded_file($_FILES[‘userfile’][‘tmp_name’][$ct], $uploadfile)) {
$mail->addAttachment($uploadfile, $filename);
} else {
$msg .= ‘Failed to move file to ‘ . $uploadfile;
}
}
// Письмо
$mail->isHTML(true);
$mail->Subject = “Заголовок”; // Заголовок письма
$mail->Body = “Имя $name . Телефон $number . Почта $email”; // Текст письма
// Результат
if(!$mail->send()) {
echo ‘Message could not be sent.’;
echo ‘Mailer Error: ‘ . $mail->ErrorInfo;
} else {
echo ‘ok’;
}
?>
Проверенное оттестированное решение
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'src/Exception.php';
require 'src/PHPMailer.php';
require 'src/SMTP.php';
require 'language/phpmailer.lang-ru.php';
$msg = '';
if (array_key_exists('userfile', $_FILES)) {
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.server.ru';
$mail->SMTPAuth = true;
$mail->Username = 'login@server.ru';
$mail->Password = 'uPassword';
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->setFrom('login@server.ru', 'PHP Mailer');
$mail->addAddress($_POST['to'], '');
$mail->Subject = 'PHPMailer file sender';
$mail->msgHTML('My message body');
$blacklist = array(".php", ".phtml", ".php3", ".php4");
for ($ct = 0; $ct < count($_FILES['userfile']['tmp_name']); $ct++) {
$filename = $_FILES['userfile']['name'][$ct];
$ext = substr($filename, strrpos($filename, '.'), strlen($filename) - 1); // В переменную $ext заносим расширение загруженного файла.
if (in_array($ext, $blacklist)) {die();}
$uploadfile = dirname(__FILE__)."/uploads/" . basename($filename);
if (move_uploaded_file($_FILES['userfile']['tmp_name'][$ct], $uploadfile)) {
$mail->addAttachment($uploadfile, basename($filename));
} else {
$msg .= 'Failed to move file to ' . $uploadfile;
}
}
if (!$mail->send()) {
$msg .= "Mailer Error: " . $mail->ErrorInfo;
} else {
$msg .= "Message sent!";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>PHPMailer Upload</title>
</head>
<body>
<?php if (empty($msg)) { ?>
<form method="post" enctype="multipart/form-data">
<input type="text" name="to" value="">
<input type="hidden" name="MAX_FILE_SIZE" value="10485760">
Select one or more files:
<input name="userfile[]" type="file" multiple="multiple">
<input type="submit" value="Send Files">
</form>
<?php } else {
echo $msg;
} ?>
</body>
</html>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Почему-то fetch_assoc сразу возвращает false, хотя в таблице 15 строкС подключением все в порядке
PayPal работает на localhost нормально, а на сервере нетТестовые деньги снимает, но не идет редирект после оплаты