Kod HTML we wiadomości email z załącznikiem

Odpowiedz Nowy wątek
2011-09-28 20:15
0

Witam serdecznie, wysyłam wiadomości email z załącznikiem i bez za pomocą tej klasy:


    class eMail{

        public $to;         // odbiorc awiadomosci
        public $subject;    // temat wiadomosci
        public $content;    // tresc wiadomosci
        public $headers;    // naglowki wiadomosci
        public $marker;     // znacznik oddzielajacy zalaczniki
        public $type;       // type-maila

        function __construct($type='1',$from='Imię Nazwisko',$email='[email protected]'){

            $this->type=$type;

            $this->headers.='From: '."=?UTF-8?B?".base64_encode($from)."?="."<$email>".PHP_EOL;
            $this->headers .= "MIME-Version: 1.0".PHP_EOL; 

            if($type==1){
                    $this->headers .= "Content-type: text/html; charset=utf-8".PHP_EOL; 
            } else {
                srand((double)microtime() * 1000000);  
                $this->marker = md5(uniqid(rand()));  
                $this->headers .= "Content-Type: multipart/mixed;".PHP_EOL;  
                $this->headers .= "\tboundary=\"___" . $this->marker . "==\"\n\n";  
                $this->content = "--___" . $this->marker . "==\n";  
                $this->content .= 'Content-Type: text/plain; charset=utf-8'.PHP_EOL;  
                $this->content .= "Content-Transfer-Encoding: 8bit\n\n";
            }
        }
        public function eMailContent($subject,$content){
            $this->subject = base64_encode($subject);
            $this->subject = "=?UTF-8?B?".$this->subject."?=";
            $this->content .= $content;
        }
        public function eMailAttachment($mimeType,$fileName,$data){
            if($this->type!=1){
                $this->content.="\n\n--___".$this->marker."==\n";
                $this->content.="Content-Type: ".$mimeType."; name=\"".$fileName."\"\n";
                $this->content.="Content-Transfer-Encoding: base64\n";
                $this->content.="Content-Disposition: attachment; filename=\"".$fileName."\"\n\n";
                $this->content.=chunk_split(base64_encode($data));
            }
        }
        public function eMailSend($to){
            if($this->type != 1){
                $this->content.="--___".$this->marker."==--\n\n";
            }
            if (mail($to,$this->subject,$this->content,$this->headers)){
                return 1;
            } else {
                return 0;
            }
        }
    }

I problem jest taki, że gdyby wysyłam e-mail bez załącznika (Content-type: text/html; charset=utf-8) to wszytko jest ok, czyta kod HTML, natomiast jak wysyłam kod HTML we wiadomości z załącznikiem(Content-Type: text/plain; charset=utf-8) to dostaję na pocztę wiadomość ze encjami, ale jak przepuszczam tę wiadomość przez htmlspecialchars_decode() to też nie działa. Ma ktoś jaki pomysł, inny niż PHPMailer?

EDIT: // PHPMailer przy autoryzacji na niektórych tańszych serwerach się wysypuje. Testuje obecnie jak działa bez autoryzacji SMTP i chyba będę musiał z niego skorzystać. A nie chcą go używać bo jest trochę za obszerny, potrzebuje prostej i krótkiej klasy do wysyłania emaili wraz z załącznikiem.


edytowany 1x, ostatnio: corey, 2011-09-29 11:40
a co jest złego w PHPMailerze, u mnie chodzi poprawnie. - krwq 2011-09-29 08:35

Pozostało 580 znaków

2011-09-29 11:44
wskaźnik
0

Ostatnio używałem Swift Mailer'a.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0