» Форма входа

»Мoy-weB ver.4.1

» Статистика

Главная » 2008 » Сентябрь » 20 » Как слать письма PHP аттачами

Как слать письма PHP аттачами
20.Сен.2008 | 20:59:41

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

Как послать письмо в 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 dosn't exist.";
return;
}
$fp=fopen($path.$name,"r");
if (!
$fp) {
print
"File $path.$name coudn't 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="$boundary"n";
$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("

Пpивет!

".
"
Посылаю двоичный файл [/bin/ls] ..."
.
"

"
);
$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уществующие файлы.
//


?>

Категория: Статьй и уроки | Просмотров: 460 | Добавил: CorsaR
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]