php smtp yandex отправка письма с файлом

https://id.yandex.ru/security/app-passwords Ещё пароль приложений почта Ещё на самой почте Все настройки > Почтовые программы С сервера imap.yandex.ru по протоколу IMAP <?php $from = 'from@yandex.ru'; $fromName = 'fromName'; $fromPassword = 'fromPassword'; $to = 'to@yandex.ru'; $title = 'title123'; $htmlContent = "<h1>HI WORLD</h1>"; /*<h2>Данные пользователя, который отправил</h2> <ol> <li><b>Дата:</b> ".date('Y-m-d H:i:s')."</li> <li><b>Дата unix</b> ".time()."</li> <li><b>IP:</b> ".$_SERVER['REMOTE_ADDR']."</li> <li><b>Тело:</b> ".file_get_contents('php://input')."</li> <li><b>GET:</b> ".print_r($_GET, true)."</li> <li><b>POST:</b> ".print_r($_POST, true)."</li> <li><b>FILES:</b> ".print_r($_FILES, true)."</li> <li><b>COOKIE:</b> ".print_r($_COOKIE, true)."</li> <li><b>Getallheaders:</b> ".print_r(getallheaders(), true)."</li> </ol>*/ $delimeter = md5(time()); $fileName = 'WT '.date("Ymd His").'.json'; $fileContent = '{"hi":123}'; // --------- // Заголовки $headers = "From: $fromName <$from>\r To: <$to>\r Subject: $title\r MIME-Version: 1.0\r Content-Type: multipart/mixed; boundary=\"$delimeter\"\r "; // Сообщение $message = "--$delimeter\r Content-Type: text/html; charset=\"utf-8\"\r Content-Transfer-Encoding: 7bit\r\n\r $htmlContent\r\n\r --$delimeter\r Content-Type: application/octet-stream; name=\"$fileName\"\r Content-Transfer-Encoding: base64\r Content-Disposition: attachment\r\n\r ".chunk_split(base64_encode($fileContent))."\r\n\r --$delimeter--"; // Подключение $smtp = fsockopen('ssl://smtp.yandex.ru', 465, $errCode, $errText, 30); if (!$smtp) { echo "Ошибка подключения к SMTP-серверу: $errCode - $errText"; exit(); } $response = fread($smtp, 1024); if (strpos($response, '220') === false) { echo "Ошибка при подключении к SMTP-серверу: $response"; exit(); } fputs($smtp, "HELO smtp.yandex.ru\r\n"); $response = fread($smtp, 1024); if (strpos($response, '250') === false) { echo "Ошибка при приветствии SMTP-сервера: $response"; exit(); } fputs($smtp, "AUTH LOGIN\r\n"); $response = fread($smtp, 1024); if (strpos($response, '334') === false) { echo "Ошибка при аутентификации: $response"; exit(); } fputs($smtp, base64_encode($from) . "\r\n"); $response = fread($smtp, 1024); if (strpos($response, '334') === false) { echo "Ошибка при отправке имени пользователя: $response"; exit(); } fputs($smtp, base64_encode($fromPassword) . "\r\n"); $response = fread($smtp, 1024); if (strpos($response, '235') === false) { echo "Ошибка при отправке пароля: $response"; exit(); } fputs($smtp, "MAIL FROM: <$from>\r\n"); $response = fread($smtp, 1024); if (strpos($response, '250') === false) { echo "Ошибка при указании отправителя: $response"; exit(); } fputs($smtp, "RCPT TO: <$to>\r\n"); $response = fread($smtp, 1024); if (strpos($response, '250') === false) { echo "Ошибка при указании получателя: $response"; exit(); } fputs($smtp, "DATA\r\n"); $response = fread($smtp, 1024); if (strpos($response, '354') === false) { echo "Ошибка при начале передачи письма: $response"; exit(); } fputs($smtp, $headers . "\r\n"); fputs($smtp, $message . "\r\n"); fputs($smtp, ".\r\n"); $response = fread($smtp, 1024); if (strpos($response, '250') === false) { echo "Ошибка при отправке письма: $response"; exit(); } fputs($smtp, "QUIT\r\n"); fclose($smtp); echo "Письмо успешно отправлено.";