PHP класс для отправки E-mail

Возможности:

  • Отправляет письмо в кодировке UTF-8.
  • Письмо отправляется в формате HTML, настроены стили для основных тегов.
  • Позволяет приложить к письму файлы.
  • Возможность сохранять копию письма на сервере в файле .eml.
  • У получателя можно указать несколько адресов через запятую, на каждый e-mail придет отдельное письмо.

Скачать файл класса с GitHub

1
$mail = new Mail;

// От кого.
$mail->from('EMAIL_ОТПРАВИТЕЛЯ', 'ИМЯ_ОТПРАВИТЕЛЯ');

 // Кому, можно указать несколько адресов через запятую.
$mail->to('EMAIL_ПОЛУЧАТЕЛЯ', 'ИМЯ_ПОЛУЧАТЕЛЯ');

// Тема письма.
$mail->subject = 'Рассылка c сайта';

// Текст.
$mail->body = '
	<h1>Здравствуйте!</h1>
	<p>Мы хотим предложить...</p>
';

// Отправка.
$mail->send();
PHP
2

Путь до файлов должен быть абсолютным.
Общий размер файлов не должен превышать 25 Мб.

$mail = new Mail;
$mail->from('EMAIL_ОТПРАВИТЕЛЯ', 'ИМЯ_ОТПРАВИТЕЛЯ');
$mail->to('EMAIL_ПОЛУЧАТЕЛЯ', 'ИМЯ_ПОЛУЧАТЕЛЯ');
$mail->subject = 'Рассылка c сайта';

// Добавление  файлов к письму.
$mail->addFile(__DIR__ . '/price.xls');
$mail->addFile(__DIR__ . '/logo.png');

$mail->body = '<h1>Здравствуйте!</h1>...';
$mail->send();
PHP
3
$mail = new Mail;
$mail->from('EMAIL_ОТПРАВИТЕЛЯ', 'ИМЯ_ОТПРАВИТЕЛЯ');
$mail->subject = 'Рассылка c сайта';
$mail->body = '<h1>Здравствуйте!</h1>...';
$mail->addFile(__DIR__ . '/logo.png');

// Отправка писем в цикле.
foreach ($list as $row) {
	$mail->to($row['email'], $row['name']);
	$mail->send();
}
PHP
4

В классе реализована функция дампа отправленных писем. В данном примере файлы сохраняются в директорию /sendmail/, если ее не существует, то она будет создана автоматически. В имени файла будет дата отправки письма. Также есть защита от перезаписи файлов с одинаковыми именами.

$mail = new Mail;

// Включение дампа и установка директории.
$mail->dump = true;
$mail->dumpPath = __DIR__ . '/sendmail';

$mail->from('EMAIL_ОТПРАВИТЕЛЯ', 'ИМЯ_ОТПРАВИТЕЛЯ');
$mail->to('EMAIL_ПОЛУЧАТЕЛЯ', 'ИМЯ_ПОЛУЧАТЕЛЯ');
$mail->subject = 'Рассылка c сайта';
$mail->body = '<h1>Здравствуйте!</h1>...';
$mail->send();
PHP
5
include_once('mail.php');

$mail = new Mail;
$mail->from('mail@site.com', 'Site.com');
$mail->to('ivan@site.com', 'Иван Иванов');
$mail->subject = 'Подтверждение заказа с сайта Site.com';
$mail->body = '
	<h1>Здравствуйте Иван Иванов!</h1>
	<p>
		Уважаемый покупатель, заказ принят и ему присвоен номер <strong>1953</strong>.
		<br />Используйте этот номер для уточнения заказа.
		<br />Пожалуйста проверьте информацию ниже и в случае ошибки свяжитесь с нами.
	</p>
	<ul>
		<li><strong>Имя:</strong> Иван Иванов</li>
		<li><strong>E-mail:</strong> ivan@site.com</li>
		<li><strong>Способ доставки:</strong> самовывоз</li>
	</ul>
	<h2>Данные о товарах:</h2>
	<table>
		<thead>
			<tr>
				<th>№</th>
				<th>Наименование товара</th>
				<th>Кол-во</th>
				<th>Цена</th>
				<th>Сумма</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td style="text-align: center;">1</td>
				<td>
					Настенный газовый котел Buderus Logamax U072-12K 7736900359RU
					<br>Артикул: 7736900359RU
				</td>
				<td style="text-align: center;">2 шт.</td>
				<td style="text-align: center;">30 0000 руб.</td>
				<td style="text-align: center;">60 0000 руб.</td>
			</tr>
		</tbody>
	</table>
	<h4>ИТОГО: 60 0000 руб.</h4>
	<hr>
	<p>
		С уважением, Site.com
		<br><a href="http://site.com">http://site.com</a>
	</p>
';

$mail->addFile(__DIR__ . '/prods.docx');
$mail->send();
PHP

Результат:

21.12.2016, обновлено 11.12.2020
15982
Предыдущая запись Отправка письма с вложением
Следующая запись Отправка писем через PHPMailer

Комментарии 1

Алексей Лужецкий Алексей Лужецкий
21 октября 2023 в 12:03
Спасибо за урок и данный скрипт. Внедрил в проект, работает. Только вопрос. Отправляю письмо html верстки и в почтовике видны границы таблиц, серым цветом. К таблицам применяю colapse, а границы всё равно видны. Может ли это быть связанно с формированием письма в самом скрипте?

, чтобы добавить комментарий.

Другие публикации

Создание товарной накладной в PHPExcel
Пример, как сформировать товарную накладную с помощью библиотеки PHPExcel. В результате получится файл в формате xlsx...
19508
+8
Отправка письма с вложением
Отправка e-mail в кодировке UTF-8 с вложенными файлами и возможные проблемы.
12014
+3
Генерация счета на оплату PDF PHP
С помощью расширения dompdf можно легко сформировать PDF файл. По сути, dompdf - это конвертер HTML в PDF который...
65100
+33
Генерация QR-кода в PHP
Вопрос генерации QR-кодов в PHP достаточно освещён, есть много библиотек, одной из них является «PHP QR Code» – быстрый и легкий класс, рассмотрим его применение совместно с графической библиотекой...
65499
+18
Пример парсинга html-страницы на phpQuery
phpQuery – это удобный HTML парсер взявший за основу селекторы, фильтры и методы jQuery, которые позволяют...
62080
+25
Описание мета-тегов
В статье представлены все самые встречающеюся мета-теги с примерами и пояснениями их использования.
26427
+4