Одним из немногих преимуществ языка программирования 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’ — кодировка сообщения;