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 "Письмо успешно отправлено.";