Требуется отправить письмо (html) с помощью функции mail(). Вложение может присутствовать, может отсутствовать.
В ходе решения задачи возникла проблема: если нет вложения, то приходит письмо; есть вложение - приходит только вложение.
Прилагаю часть кода, отвечающую за почту:
Спойлер (Отобразить)
PHP:
скопировать код в буфер обмена
//адрес получателя $to='repliesonsitemail@gmail.com'; //тема письма $subject='Online-обращение: '.$fio_subject; //текст письма $message="<html> <head> <meta http-equiv='X-UA-Compatible' content='text/html' charset='utf-8' /> <title>Online-обращение от '.$fio_subject.'</title> </head> <body> <h1 style='align: center'>Обращение</h1> <table width=100% border=1 style=\"font-size:20\"> <tr> <td>Дата обращения</td> <td>".$today."</td> </tr> <tr> <td>Представитель</td> <td>".$fpred."</td> </tr> <tr> <td>Субъект обращения</td> <td>".$fio_subject."</td> </tr> <tr> <td>Дата рождения</td> <td>".$bdate."</td> </tr> <tr> <td>СНИЛС</td> <td>".$snils."</td> </tr> <tr> <td>Адрес места проживания</td> <td>".$address."</td> </tr> <tr> <td>Номер филиала бюро МСЭ</td> <td>".$msetype."</td> </tr> <tr> <td>Дата освидетельствования</td> <td>".$odate."</td> </tr> <tr> <td>Текст обращения</td> <td>".$msg_text."</td> </tr> <tr> <td>Прикрепленный файл</td> <td>".$filepath."</td> </tr> </table> </body> </html>"; echo "Кому: ".$to."<br>"; echo "Тема: ".$subject."<br>"; echo "Сообщение: <br>".$message."<br>"; //разделитель echo "Создаем заголовки:<br>"; //заголовки $mailheaders = 'MIME-Version: 1.0;'."\r\n"; $mailheaders .="Content-Type: multipart/mixed; boundary=\"$boundary\""."\r\n"; $mailheaders .= 'From: site@msepskov'."\r\n"; echo $mailheaders."<br>"; echo "Присоединяем сообщение:<br>"; echo $multipart."<br>"; $multipart = $boundary."\r\n"; $multipart = 'MIME-Version: 1.0;'."\r\n"; $multipart .= "Content-Type: text/html; charset=UTF-8"."\r\n"; $multipart .= "Content-Transfer-Encoding: base64\r\n"; $multipart .= "\r\n"; //$multipart .= iconv("utf8", "windows-1251", $message); echo $multipart."<br>"; echo "Проверяем файл... "; if($filepath!="нет") { echo "Найден!<br>"; // Закачиваем файл //$fpath="/var/www/site".$filepath; $fh = fopen($filepath,"rb"); if (!$fh) { print "Не удается открыть файл по адресу: ".$filepath."!"; } echo "Получаю!"; echo "<br>Прикрепляю!<br>"; // чтение файла $message_part = "--".$boundary."\r\n"; $message_part .= "Content-Type: application/octet-stream; name=\"$servername\"\r\n"; $message_part .= "Content-Transfer-Encoding: base64\r\n"; $message_part .= "Content-Disposition: attachment; filename=\"$servername\"\r\n"; $message_part .= "\r\n"; $message_part .= "\r\n--$boundary--\r\n"; // второй частью прикрепляем файл, можно прикрепить два и более файла $multipart .= $message_part; } else echo "Не найден!<br>"; echo "Отправляем почту...<br>"; $success=mail($to,$subject,$multipart,$mailheaders); if($success) echo "Письмо успешно отправлено!"; else echo "Ошибка отправки!"; }
З.Ы. переменные наподобие "$fio_subject" и "$snils" считываются из $_POST корректно.
|