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='adres@example.com'){
$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.