Вроде как, рабочий мейлер получился

master
Pavel Belyaev 4 years ago
parent eac6c5ec5d
commit 8454b9d281

@ -0,0 +1,85 @@
<?php
/******************************************************************************
| LE MAIL v0.1 25.08.2021 by Pavel Belyaev, https://github.com/TechResearchRu |
| данный функционал требует тестирования, распространяется КАКЕСТЬ |
******************************************************************************/
class LE_MAIL
{
protected $eol="\r\n", $separator="123LE", $charset="windows-1251", $sep;
protected function encode($body)
{
return iconv('UTF-8', $this->charset.'//TRANSLIT', $body);
}
protected function base_encode($text)
{
$subject = base64_encode($this->encode($text));
return '=?'.$this->charset.'?B?'.$text.'?=';
}
protected function headers($from,$type)
{
$eol = $this->eol;
$sep = $this->separator;
$headers ="MIME-Version: 1.0".$eol;
$headers .='Content-Type: multipart/mixed; boundary="'.$sep.'"'.$eol;
$headers .="From: ".$from.$eol;
return $headers;
}
protected function attach_info($path)
{
$file = pathinfo($path)['basename'];
$mime = mime_content_type($path);
if ($mime===false) $mime="application/octet-stream";
return [$file,$mime];
}
protected function attachment($path=null)
{
if ($path===null || $path===false || !is_file($path)) return false;
$eol = $this->eol;
list ($filename,$mime) = $this->attach_info($path);
$content = file_get_contents($path);
$body = $this->sep.'Content-Type: '.$mime.'; name="'.$filename.'"'.$eol;
$body .= "Content-Transfer-Encoding: base64" . $eol;
$body .= "Content-Disposition: attachment" . $eol;
$body .= chunk_split(base64_encode($content)) . $eol;
return $body;
}
protected function html_wrapper($text)
{
$html ='<html><head><META http-equiv="Content-Type" content="text/html; charset='.$this->charset.'"></head>';
$html .='<body>'.$this->encode($text).'</body></html>';
return $html;
}
protected function html_message($text)
{
$text = $this->html_wrapper($text);
$eol = $this->eol;
$body = $this->sep.'Content-Type: text/html; charset="'.$this->charset.'"'.$eol;
$body .= "Content-Transfer-Encoding: Quot-Printed\n".$eol;
$body .= $text . $eol;
return $body;
}
public function send($from,$to,$message,$subject,$files=false)
{
$eol = $this->eol;
$this->separator = md5(time());
$this->sep = "--" . $this->separator . $eol;
$headers = $this->headers($from,($files!==null));
$body = $this->html_message($message);
if ($files!==false && is_string($files)) $files = [$files];
if (is_array($files))
foreach($files as $k=>$path) $body.=$this->attachment($path);
$body .= "--" . $this->separator . "--";
return mail($to, $subject, $body, $headers);
}
}
Loading…
Cancel
Save