Главная страница статей --> Хитрости при программировании php, заметки по базам данных

Как слать письма PHP аттачами

Источник: realcoding.net

Как послать письмо в HTML виде? Присоедините к письму аттач с названием message.html и письмо превратиться в HTML-письмо!

<?
// Функции. Можно вынести в дpугой файл.

class html_mime_mail {
var
$headers;
var
$multipart;
var
$mime;
var
$html;
var
$parts = array();

function
html_mime_mail($headers=) {
$this->headers=$headers;
}

function
add_html($html=) {
$this->html.=$html;
}

function
build_html($orig_boundary,$kod) {
$this->multipart.=--$orig_boundaryn;
if (
$kod==w $kod==win $kod==windows-1251) $kod=windows-1251;
else
$kod=koi8-r;
$this->multipart.=Content-Type: text/html; charset=$kodn;
$this->multipart.=BCC: del@ipo.spb.run;
$this->multipart.=Content-Transfer-Encoding: Quot-Printednn;
$this->multipart.=$this->htmlnn;
}


function
add_attachment($path=, $name = , $c_type=application/octet-stream) {
if (!
file_exists($path.$name)) {
print
File $path.$name dosnt exist.;
return;
}
$fp=fopen($path.$name,r);
if (!
$fp) {
print
File $path.$name coudnt be read.;
return;
}
$file=fread($fp, filesize($path.$name));
fclose($fp);
$this->parts[]=array(body=>$file, name=>$name,c_type=>$c_type);
}


function
build_part($i) {
$message_part=;
$message_part.=Content-Type: .$this->parts[$i][c_type];
if (
$this->parts[$i][name]!=)
$message_part.=; name = .$this->parts[$i][name].n;
else
$message_part.=n;
$message_part.=Content-Transfer-Encoding: base64n;
$message_part.=Content-Disposition: attachment; filename = .
$this->parts[$i][
name].nn;
$message_part.=chunk_split(base64_encode($this->parts[$i][body])).n;
return
$message_part;
}


function
build_message($kod) {
$boundary==_.md5(uniqid(time()));
$this->headers.=MIME-Version: 1.0n;
$this->headers.=Content-Type: multipart/mixed; boundary=$boundaryn;
$this->multipart=;
$this->multipart.=This is a MIME encoded message.nn;
$this->build_html($boundary,$kod);
for (
$i=(count($this->parts)-1); $i>=0; $i--)
$this->multipart.=--$boundaryn.$this->build_part($i);
$this->mime = $this->multipart--$boundary--n;
}


function
send($server, $to, $from, $subject=, $headers=) {

$headers=To: $tonFrom: $fromnSubject: $subjectnX-Mailer: The Mouse!n$headers;
$fp = fsockopen($server, 25, &$errno, &$errstr, 30);
if (!
$fp)
die(
Server $server. Connection failed: $errno, $errstr);
fputs($fp,HELO $servern);
fputs($fp,MAIL FROM: $fromn);
fputs($fp,RCPT TO: $ton);
fputs($fp,DATAn);
fputs($fp,$this->headers);
if (
strlen($headers))
fputs($fp,$headersn);
fputs($fp,$this->mime);
fputs($fp,n.nQUITn);
while(!
feof($fp))
$resp.=fgets($fp,1024);
fclose($fp);
}
}


// *************************************************************************
//
// В качестве аттача пpисоединяем html-письмо (открывается автоматически).
// Второй аттач - некоторый файл из каталога.
// Вот так вызывать все то, что написано выше:
//
// *************************************************************************


$mail=new html_mime_mail();
$mail->add_html(<html><body><center><h2>Пpивет!<br><br>.
<br>Посылаю двоичный файл [/bin/ls] ....
</h2></center></body></html>);
$mail->add_attachment(/bin/,ls);
$mail->build_message(win); // если не win, то кодиpовка koi8
$mail->send(ПОЧТОВЫЙ_ХОСТ_ВАШЕГО_ПРОВАЙДЕРА,
КОМУ_(E-MAIL),
ОТ_КОГО_(E-MAIL),
ТЕМА ПИСЬМА);

//
// После прихода письма качаем по ФТП оригинальный /bin/ls и сравниваем с
// импортированным из письма:
//
// X:temp>fc /b ls ls2
// Сравнение файлов ls и LS2
// FC: различия не найдены
//
//
// Внимание! Если у вас нет файла /bin/ls, то просто закомментируйте строку
// $mail->add_attachment(/bin/,ls), чтобы программа не пыталась присоединить
// к письму неcуществующие файлы.
//


?>



Похожие статьи:
- Как сделать эффективный баннер
- Метатеги
- Новое окно при нажатии кнопки
- Бусидо web-дизайнера
- Как обойтись без использования SSI
- Авторизация и аутентификация без куки
- Пишем скрипт гостевой книги
- Своя студия веб-дизайна.
- 21 ошибка программиста PHP
- Современные технологии продвижения сайтов
- Изменение внешнего вида счетчика в CNStats
- Программная выписка счета в системе WebMoney
- Графический счетчик на Perl


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |

Контакты
Редакция:
[0.001]