karimsin
@karimsin

Как отправить файл клиенту на почту?

Здравствуйте.
Есть скрипт отправки письма на почту, которую заполняет клиент.
Появилась необходимость сделать так, чтобы скрипт отвечал клиенту(который заполнил заявку) по почте, и вставлял туда файл, например: file.html

Подскажите как это сделать, куда копать, что почитать.

Код скрипта:
<?php
 /* Здесь проверяется существование переменных */
  if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
 if (isset($_POST['name'])) {$name = $_POST['name'];}
  if (isset($_POST['email'])) {$email = $_POST['email'];}

/* Сюда впишите свою эл. почту */
 $address = "site@mail.ru";

/* А здесь прописывается текст сообщения, \n - перенос строки */
 $mes = "Тема: Заявка на получение информации!\nИмя клиента: $name\nE-mail: $email\nТелефон: $phone";

/* А эта функция как раз занимается отправкой письма на указанный вами email */
$sub='Заявка со страницы "Каталог"'; //сабж

$email='Заявка с сайта <wordpress@site.ru>'; // от кого
 $send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$email");

ini_set('short_open_tag', 'On');
header('Refresh: 3; URL=index.html');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="refresh" content="3; url=site.ru">
<title>Спасибо, заявка отправлена!</title>
<meta name="generator">
<style type="text/css">
body
{
   
   background: #ffffff url(/zakaz.png) top -70% center no-repeat;
   
}

<script type="text/javascript">
setTimeout('location.replace("/index.html")', 3000);
/*Изменить текущий адрес страницы через 3 секунды (3000 миллисекунд)*/
</script> 
</head>
</body>
</html>
  • Вопрос задан
  • 139 просмотров
Решения вопроса 1
orlov0562
@orlov0562 Куратор тега PHP
I'm cool!
В поиске вбей: php отправка письма с вложением. Будет куча примеров.

Вот один из них
$path = '/путь/к/папке/с/файлом/';
$filename = 'file.html';

$file = $path.$filename;
$content = file_get_contents( $file);
$content = chunk_split(base64_encode($content));
$uid = md5(uniqid(time()));
$name = basename($file);

// header
$header = "From: ".$from_name." <".$from_mail.">\r\n";
$header .= "Reply-To: ".$replyto."\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";

// message & attachment
$nmessage = "--".$uid."\r\n";
$nmessage .= "Content-type:text/plain; charset=iso-8859-1\r\n";
$nmessage .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$nmessage .= $message."\r\n\r\n";
$nmessage .= "--".$uid."\r\n";
$nmessage .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n";
$nmessage .= "Content-Transfer-Encoding: base64\r\n";
$nmessage .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
$nmessage .= $content."\r\n\r\n";
$nmessage .= "--".$uid."--";

if (mail($mailto, $subject, $nmessage, $header)) {
    return true; // Or do something here
} else {
  return false;
}


вот еще один с использованием PHPMailer
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

$path = '/путь/к/папке/с/файлом/';
$filename = 'file.html';

$email = new PHPMailer();
$email->SetFrom('email@отправителя.com', 'Your Name');
$email->Subject   = 'Message Subject';
$email->Body      = $bodytext;
$email->AddAddress( 'email@получателя.com' );

$email->AddAttachment( $path.$filename , $filename);

return $email->Send();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы