Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программируем на PHP - вопросы и ответы.


Рассылка "Программирование на php. Вопросы и ответы"

"PHP Новичок!"

Задавай свои наболевшие вопросы. И радуйся php возможностям!

Ваши

Вопросы php


Как послать mail аттач ? Дело в том, что я пробовал исходники, но они не работают. ПеХеПе просто виснет. Я бы хотел, чтоб аттач был переменой. Типа $Attach. И потом чтоб посылался через команду mail(); Есть ли решение этого вопроса?

 

Pioneer32 писал(а):

1. Через mail или напрямую писать класс для работы с SMTP - запаришься (из опыта, сам написал)
2. Грамотно отправить через mail - трудно
3. Поищи класс phpmailer, он умеет и файлы и строки атачить


Не так уж и трудно написать класс, вот тот, который написал я и прекрасно им пользуюсь

Код:

<?php
/*
======================================================================
                     Класс клиента E-mail
----------------------------------------------------------------------
                               PHP4
----------------------------------------------------------------------
       (C) Maksym Muradyan <maksym.muradyan@seadog.com.ua>, 2007
======================================================================
*/
?>
<?php
class cl_Email_client {

    var $dir_for_attachments = '/home/seadog/email_attachments/';
    var $message_parts = array('This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible.');
    var $message;
    var $headers;
    var $new_line = "\r\n";
    var $content_type = "multipart/mixed";
    var $boundary;

    function sendmail($to, $from, $subject) {
        $subject = $this->get_subject($subject);
        mail($to, $subject, $this->message, "From: {$from}{$this->new_line}" . $this->headers);
    }

    function set_content_type_multipart_mixed() {
        $this->content_type = 'multipart/mixed';
    }

    function set_content_type_multipart_alternative() {
        $this->content_type = 'multipart/alternative';
    }

    function set_content_type_multipart_related() {
        $this->content_type = 'multipart/related';
    }

    function get_MIME_type($fname) {
    //
Определение MIME-типа файла по его расширению
        $pieces = explode('.', $fname);
        $ext = array_pop($pieces);
        switch ($ext) {
            case 'gif': return 'image/gif'; break;
            case 'GIF': return 'image/gif'; break;
            case 'jpg': return 'image/jpeg'; break;
            case 'JPG': return 'image/jpeg'; break;
            case 'zip': return 'application/x-zip-compressed'; break;
            case 'doc': return 'application/msword'; break;
            default: return 'applicatin/octet-stream'; break;
        }
    }

    function get_subject($subject) {
        return '=?windows-1251?b?' . base64_encode ($subject) . '?=';
    }

    function create_email() {
        $this->headers = "MIME-Version: 1.0{$this->new_line}";
        $this->headers .= "Content-Type: {$this->content_type}; boundary={$this->boundary}{$this->new_line}";
        foreach ($this->message_parts as $val) {
            $this->message .= $this->new_line . $this->new_line . $val;
        }
        $this->message .= $this->new_line . '--' . $this->boundary . '--';
    }

    function add_email_part($body, $content_type = 'text/plain', $charset = 'windows-1251', $content_transfer_encoding = 'base64') {
        $msg = '--' . $this->boundary . $this->new_line;
        $msg .= "Content-Type: $content_type; charset=\"$charset\"" . $this->new_line;
        $msg .= "Content-Transfer-Encoding: $content_transfer_encoding" . $this->new_line . $this->new_line;
        if ($content_transfer_encoding == 'base64') {
            $msg .= base64_encode ($body);
        } else {
            $msg .= $body;
        }
        $this->message_parts[] = $msg;
    }

    function add_email_attachment($file_name, $fname, $content_type = '') {
        $msg = '--' . $this->boundary . $this->new_line;
        if (empty($content_type)) {
            $content_type = $this->get_MIME_type($fname);
        }
        $msg .= "Content-Type: $content_type; name=\"$fname\"" . $this->new_line;
        $msg .= 'Content-Transfer-Encoding: base64' . $this->new_line;
        $msg .= "Content-Disposition: attachment" . $this->new_line . $this->new_line;
        $handle = fopen($this->dir_for_attachments.$file_name, "r");
        $contents = fread($handle, filesize($this->dir_for_attachments.$file_name));
        fclose($handle);
        unlink($this->dir_for_attachments.$file_name);
        $msg .= base64_encode ($contents);
        $this->message_parts[] = $msg;
    }

    function cl_Email_client() {
        $this->boundary = uniqid(rand(1, 10000));
    }

}
?>

 

 

======= >>> Php форум

"PHP Новичок!"

Задавай свои наболевшие вопросы. И радуйся php возможностям!

Ваши

Вопросы php
Бесплатный сайт создать || движок сайта php || Бесплатные php скрипты || самостоятельное создание сайтов || Бесплатно сделать сайт || сайт информационная безопасность || дизайн сайта Бесплатно

В избранное