Пробовал на разные почты письма отправлять, вложений нет...
В интернете не нашёл как исправить, подскажите плз.
код:
HTML:
<form action="#" class="form" method="POST" enctype="multipart/form-data">
<label class="form__label">
<input class="input form__input input-name" type="text" data-validate-field="name"
name="Имя" placeholder="Введите имя">
</label>
<label class="form__label">
<input class="input form__input input-mail" type="email" data-validate-field="email"
name="Email" placeholder="Введите email">
</label>
<label class="form__label">
<input class="input form__input input-tel" type="tel" data-validate-field="tel" name="Телефон" placeholder="Введите
телефон">
</label>
<label class="form__label">
<textarea class="textarea form__input" name="Сообщение" id="" cols="30" rows="10"
placeholder="Введите ваше сообщение.."></textarea>
</label>
<input class="input" type="file" name="file[]" multiple id="myfile">
<button class="button form__button">Отправить</button>
</form>
PHP:
<?php
// Файлы phpmailer
require 'phpmailer/PHPMailer.php';
require 'phpmailer/SMTP.php';
require 'phpmailer/Exception.php';
$title = "Тема письма";
$file = $_FILES['file'];
$c = true;
// Формирование самого письма
$title = "?????????????????????????????????????????????";
foreach ( $_POST as $key => $value ) {
if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
$body .= "
" . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
<td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
<td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
</tr>
";
}
}
$body = "<table style='width: 100%;'>$body</table>";
// Настройки PHPMailer
$mail = new PHPMailer\PHPMailer\PHPMailer();
try {
$mail->isSMTP();
$mail->CharSet = "UTF-8";
$mail->SMTPAuth = true;
// Настройки вашей почты
$mail->Host = 'smtp.mail.ru'; // SMTP сервера вашей почты
$mail->Username = '???????????????'; // Логин на почте
$mail->Password = '???????????????'; // Пароль на почте
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->setFrom('???????????????', 'Заявка с вашего сайта'); // Адрес самой почты и имя отправителя
// Получатель письма
$mail->addAddress('???????????????@yandex.ru');
$mail->addAddress('???????????????@gmail.com');
// Прикрипление файлов к письму
if (!empty($file['name'][0])) {
for ($ct = 0; $ct < count($file['tmp_name']); $ct++) {
$uploadfile = tempnam(sys_get_temp_dir(), sha1($file['name'][$ct]));
$filename = $file['name'][$ct];
if (move_uploaded_file($file['tmp_name'][$ct], $uploadfile)) {
$mail->addAttachment($uploadfile, $filename);
$rfile[] = "Файл $filename прикреплён";
} else {
$rfile[] = "Не удалось прикрепить файл $filename";
}
}
}
// Отправка сообщения
$mail->isHTML(true);
$mail->Subject = $title;
$mail->Body = $body;
$mail->send();
} catch (Exception $e) {
$status = "Сообщение не было отправлено. Причина ошибки: {$mail->ErrorInfo}";
}
JS:
console.log('Init!');
// inputmask
const form = document.querySelector('.form');
const telSelector = form.querySelector('input[type="tel"]');
const inputMask = new Inputmask('+7 (999) 999-99-99');
inputMask.mask(telSelector);
const validation = new JustValidate('.form');
validation
.addField('.input-name', [
{
rule: 'minLength',
value: 3,
errorMessage: 'Введите 3 и более символов'
},
{
rule: 'maxLength',
value: 30,
},
{
rule: 'required',
value: true,
errorMessage: 'Введите имя!'
}
])
.addField('.input-mail', [
{
rule: 'required',
value: true,
errorMessage: 'Email обязателен',
},
{
rule: 'email',
value: true,
errorMessage: 'Введите корректный Email',
},
])
.addField('.input-tel', [
{
rule: 'required',
value: true,
errorMessage: 'Телефон обязателен',
},
{
rule: 'function',
validator: function () {
const phone = telSelector.inputmask.unmaskedvalue();
return phone.length === 10;
},
errorMessage: 'Введите корректный телефон',
},
]).onSuccess((event) => {
console.log('Validation passes and form submitted', event);
let formData = new FormData(event.target);
console.log(...formData);
let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
console.log('Отправлено');
let formOrder = document.querySelector('.input-name');
const successMessage = document.createElement('span');
successMessage.className = "message-success";
successMessage.innerHTML = "Спасибо, ваш заказ скоро будет обработан!";
formOrder.after(successMessage);
}
}
}
xhr.open('POST', 'mail.php', true);
xhr.send(formData);
event.target.reset();
});
upd: поправил '???????????????'; // Пароль на почте
просто тут опечатка, не из-за этого...