Передача почты с вложением
Нужен был php класс который умеет отправлять почту с вложением (вложениями). На просторах интернета нашел сей скрипт (автору спасибо), ссылку не помню.
1 |
/*класс для отпраки почты с вложениями*/ |
1 2 3 4 5 6 7 8 9 |
class x_mail{ #Задаем переменные public $from; public $to; public $headers; public $subject; public $message; private $items; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
#функция отправки почты public function sendmail(){ $_headers=""; if(!empty($this->from)){$_headers.="From: ".$this->from. "\n";} if(!empty($this->headers)){$_headers.=$this->headers. "\n";} if(!empty($this->message)){ $this->__attachmentsArray($this->message,"","text/plain");} $_headers.="MIME-Version: 1.0\n"; $_headers.=$this->__insertAttachments(); mail($this->to,$this->subject,"",$_headers); } #Инициализация переменных класса public function x_mail(){ $this->from = ""; $this->to = ""; $this->headers = ""; $this->subject = ""; $this->message = ""; $this->items = array(); } #формируем массив вложений public function __attachmentsArray($body,$name="",$type="application/octet-stream"){ $this->items[]=array("body" => base64_encode($body), "name" => $name,"type" => $type,"encoding" => "base64"); } #функция добавляет файлы в тело письма private function __insertAttachments(){ $bound = "bound".md5(time()); $multipart = "Content-Type: multipart/mixed; boundary = \"$bound\"\n\nThis is a MIME message.\n\n--$bound"; for($i = sizeof($this->items)-1; $i>=0; $i--) { $multipart .= "\n".$this->__mimeConstructor($this->items[$i]). "--$bound";} return $multipart.= "--\n"; } #формируем MIME-тип вложения private function __mimeConstructor($items) { $_mC="Content-Type: ".$items["type"].($items["name"]? "; name = \"". $items["name"]."\"" : "")."\nContent-Transfer-Encoding: ". $items["encoding"]."\n\n".$items["body"]."\n"; return $_mC; } } ИСПОЛЬЗОВАНИЕ $attachment=array(); #загружаем файлы в массив $attachment["file1.jpg"] = fread(fopen("file1.jpg", "r"), filesize("file1.jpg")); $attachment["file2.jpg"] = fread(fopen("file2.jpg", "r"), filesize("file2.jpg")); #создаем переменную класса x_mail() $mail = new x_mail(); #задаем переменные для отправки почты $mail->from = "info@yourdomen.com"; $mail->to = "info@mydomen.com"; $mail->subject = "Заказ art-stone.ru"; $mail->message = "Вам доставлен файл!"; #прикрепляем вложения foreach($attachment as $k=>$v) {$mail->__attachmentsArray($v, $k);}; #Отправляем письмо $mail->sendmail(); |
1 |
Свежие комментарии