Одним из немногих преимуществ языка программирования PHP — это легкий способ отправки электронных сообщений. Однако рано или поздно базового функционала начинает не хватать и приходиться начинать поиски в Интернете о возможных настройках стандартной функции mail.
После долгих проб я решил написать наиболее универсальную функцию, которую можно использовать для отправки email. При этом Вам не нужно будет думать о настройках. Все основные настройки уже включены в функцию. Мой метод также позволит без труда прикреплять файлы к электронным письмам (т.е. делать аттач).
Код функции отправки email на PHP:
function Mail($to, $subj, $text, $from = false, $file = array(), $contentType = 'text/html', $charset = 'utf-8') { $z = $text; $un = strtoupper(uniqid(time())); if (isset($file['path']) && is_array($file['path'])) { if (!isset($file['name']) || !is_array($file['name']) || count($file['name']) != count($file['path'])) { $file['name'] = array(); foreach ($file['path'] as $path) { $file['name'][] = basename($path); } } $z = "------------".$un."\nContent-Type:".$contentType.";\n"; $z .= "Content-Transfer-Encoding: 8bit\n\n$text\n\n"; foreach($file['path'] as $idx => $path) { $f = fopen($path, 'rb'); $z .= "------------".$un."\n"; $z .= "Content-Type: application/octet-stream;"; $z .= "name=\"".basename($path)."\"\n"; $z .= "Content-Transfer-Encoding:base64\n"; $z .= "Content-Disposition:attachment;"; $z .= "filename=\"".$file['name'][$idx]."\"\n\n"; $z .= chunk_split(base64_encode(fread($f, filesize($path))))."\n"; fclose($f); } } $head = "To: $to\n"; if ($from) { $head .= "From: $from\n"; $head .= "Reply-To: $from\n"; } $head .= "X-Mailer: PHPMail Tool\n"; $head .= "Mime-Version: 1.0\n"; $head .= "Content-Type:"; if ($z == $text) { $head .= $contentType."; charset=".$charset; } else { $head .= "multipart/mixed;"; } $head .= "boundary=\"----------".$un."\"\n\n"; return mail($to, $subj, $z, $head); }
А теперь немного описания параметров:
$to — email получателя (или получателей);
$subj — Тема сообщения;
$text — Текст сообщения (по умолчанию HTML код);
$from = false — Отправитель письма;
$file = array() — файлы для вложения в виде:
array(‘path’ => array(‘пути к файлу’), ‘name’ => array(‘имена файлов в письме’)), например
array(‘path’ => array(‘files/file1.zip’, ‘img/image.png’), ‘name’ => array(‘Программа.zip’, ‘Наш баннер.png’));
$contentType = ‘text/html’ — формат текста сообщения;
$charset = ‘utf-8’ — кодировка сообщения;