Блог старого компьютера

Блог старого компьютера


Главная PHP Отправка почты с вложением средствами php

Отправка почты с вложением средствами php

24.01.2012 06:01 Администратор PHP
Печать PDF

Часто приходится писать модули, компоненты которые бы отправляли письма с сайта на какой либо E-mail адрес. Но не так часто приходится писать такой компонент, который бы еще и отправлял письмо с вложением. Что собственно мне и потребовалось сделать.

 Помню долго копался в интернете в поисках подобной функции, но либо функция была  огромных размеров и поэтому не было желания ее использовать (непонятно зачем), либо письма просто не приходили как надо. Тогда я решил изучить заголовки писем с вложением, и просмотреть имеющиеся функции в интернете после чего родилась фот такая фот функция:
function XMail( $from, $to, $subj, $text, $filename){
$f = fopen($filename,"rb");
$un = strtoupper(uniqid(time()));
$head = "From: $from\n";
$head .= "To: $to\n";
$head .= "Subject: $subj\n";
$head .= "X-Mailer: PHPMail Tool\n";
$head .= "Reply-To: $from\n";
$head .= "Mime-Version: 1.0\n";
$head .= "Content-Type:multipart/mixed;";
$head .= "boundary=\"----------".$un."\"\n\n";
$z = "------------".$un."\nContent-Type:text/html;\n";
$z .= "Content-Transfer-Encoding: 8bit\n\n$text\n\n";
$z .= "------------".$un."\n";
$z .= "Content-Type: application/octet-stream;";
$z .= "name=\"".basename($filename)."\"\n";
$z .= "Content-Transfer-Encoding:base64\n";
$z .= "Content-Disposition:attachment;";
$z .= "filename=\"".basename($filename)."\"\n\n";
$z .= chunk_split(base64_encode(fread($f,filesize($filename))))."\n";
if (!@mail("$to", "$subj", $z, $head)){
return 0;
}
else{
return 1;
}
}

Функция довольно простая:

$from - от кого письмо (E-mail адрес)
$to - кому письмо (E-mail адрес)
$subj - тема письма
$text - текст письма
$filename - пусть до отправляемого файла

Пример использования:

XMail($from, $to, $subject, $message, "kupon1.jpg");

 

Добавить комментарий


Защитный код
Обновить

Поиск

Голосование

Что Вы думаете на счет битрикса?
 

Все материалы раздела