WeBinstruments

Инструментарий для веб-мастеров

 

на сайте на всех сайтах для веб разработчиков везде
 
 Скрипты
  PHP скрипты   
  Flash скрипты   
  Javascript скрипты   

 Софт
  Инструменты SEO   
  Разработка сайтов   
  Серверное ПО   

 Документация
  MySQL   
  PHP   
  HTML   
  Протоколы и сервисы Internet   

 Статьи
  PHP   
  MySQL   
  Сервер   
  еще...   

 Услуги и сервисы
  Домены   
  Хостинги   
  Блоки для сайта   

 Новости


 Контакты
  icq: 158325531
  email:
  все контакты: здесь


  $поблагодарить автора




Atom все поступления
Раздел Статьи
Раздел Файлы
Раздел Новости
Раздел Услуги и сервисы
комментарии

Главная / Файлы / Скрипты и Flash / PHP скрипты / Функции и классы / php_libmail класс для отправки писем


php_LibMail 1.6.0

28.02.2010 (последний раз редактировалось 09.12.2011)
сайт: http://webi.ru
условия использования: бесплатно

скачать php_libmail 1.6.0


Описание

Универсальный Php класс для отправки писем через SMTP, либо через стандартную php функцию mail().
Достаточно функциональный и простой в использовании.

Основные возможности:
  • Отправка письма с помощью SMTP, либо через mail() по вашему выбору
  • Отправка прикрепленных к письму файлов (любое количество)
  • Возможности отправки многим адресатам через To, CC или BCC
  • Возможность получить исходный текст письма без отправки, либо после отправки для ведения логов. При отправке через SMTP возращает весь диалог общения с сервером
  • Проверка синтаксиса email адресов
  • Возможность установить запрос о прочтении письма
  • Отправка писем в текстовом формате или в HTML


История изменений

версия 1.6.0 (09.12.2011)
  • Добавлена возможность добавлять имена к почтовым ящикам
    Действует в From, To и ReplyTo
    Имя добавляется через разделитель ';' например
    $m->To( "Максим;adm@webi.ru" );
версия 1.5.1 (07.02.2011)
  • Адаптирована функция проверки email адресов на валидность под php 5.2 и выше.
версия 1.5 (28.02.2010)
  • Добавлена возможность отправлять почту через SMTP.
    Подключается с помощью новой команды smtp_on().
версия 1.4 (24.02.2010)
  • адаптация к русской кодировке
  • возможность переименовывать прикрепленный файл
  • возможность отправлять письма в формате html
  • изменения в вызове некоторых функций


Пример использования


<?php
include "libmail.php"; // вставляем файл с классом
$m= new Mail; // начинаем
$m->From( "asd@asd.com" ); // от кого отправляется почта
$m->To( "komu@asad.com" ); // кому адресованно
$m->Subject( "Тема сообщения" );
$m->Body( "Текст письма" );    
$m->Cc( "copy@asd.com"); // копия письма отправится по этому адресу
$m->Bcc( "bcopy@asd.com"); // скрытая копия отправится по этому адресу
$m->Priority(3) ;    // приоритет письма
$m->Attach( "asd.gif","", "image/gif" ) ; // прикрепленный файл
$m->smtp_on( "smtp.asd.com", "login", "password" ) ; // если указана эта команда, отправка пойдет через SMTP
$m->Send();    // а теперь пошла отправка

echo "Показывает исходный текст письма:<br><pre>", $m->Get(), "</pre>";
?>



Описание класса


Mail( [кодировка] )

Начало работы с классом.
По умолчанию кодировка письма windows-1251, для отправки письма в другой кодировке укажите ее.

$mail = new Mail(); // кодировка по умолчанию
ИЛИ
$mail = new Mail("utf-8"); // любая кодировка



smtp_on( smtp_server, login, password, [ port ], [ timeout ] )

Включение отправки письма через SMTP.
Если хотите отправить письмо через SMTP, используйте эту команду.
Если нет необходимости отправлять через SMTP, проигнорируйте данную команду.

  • smtp_server: для соединения с smtp по обычному протоколу указывается сервер в обычном формате, например "smtp.mail.ru".
    Для соединения с сервером по защищенному протоколу, например с gmail.com, нужно добавить перед сервером " ssl://", например "ssl://smtp.gmail.com". Так же не забудте указать порт, для защищенных соединений он обычно 465.

  • login: логин для авторизации через smtp

  • password: пароль для авторизации smtp

  • port: порт для соединения smtp. Если порт стандартный, можно не указывать, по умолчанию 25

  • timeout: таймаут соединения. По умолчанию стоит 5 секунд. Обычно менять не нужно, но если smtp тормозной или ваш конект к серверу длиный, можно увеличить.

$mail->smtp_on("smtp.mail.ru","login","passw"); // пример стандартного соединения
ИЛИ
$mail->smtp_on("ssl://smtp.gmail.com","login","passw", 465); // пример защищенного соединения. стандартный порт изменен на 465



Subject( текст )

Тема письма.

$mail->Subject( "Привет" );

From( email )

Email от кого отправляется письмо.
Для добавления имен к адресам используйте разделитель ';' (виктор;from@asd.com)

$mail->From( "from@asd.com" );
или пример с именем
$mail->From( "сергей;from@asd.com" );

To( email )

Кому отправляется письмо.
Чтобы отправить письмо нескольким адресатам, можно в качестве входящего параметра передать массив адресов либо вызывать несколько раз эту команду.
Для добавления имен к адресам используйте разделитель ';' (виктор;to@asd.com)

// отправка одному адресату
$mail->To( "to@asd.com" );

// отправка нескольким адресатам используя массив
$to_array = array( "to1@asd.com", "to2@asd.com" );
$mail->To( $to_array );

// отправка нескольким адресатам без использования массива
$mail->To( "1@asd.com" );
$mail->To( "2@qwe.com" );


CC( email )

Кому отправить копию письма.
Чтобы отправить копию нескольким адресатам, можно в качестве входящего параметра передать массив адресов либо вызывать несколько раз эту команду.

// отправка одному адресату
$mail->CC( "to@asd.com" );

// отправка нескольким адресатам используя массив
$cc_array = array( "cc1@asd.com", "cc2@asd.com" );
$mail->CC( $cc_array );

// отправка нескольким адресатам без использования массива
$mail->CC( "1@asd.com" );
$mail->CC( "2@qwe.com" );


BCC( email )

Кому оправить скрытую копию письма.
Так же как и в предыдущих командах можно отправить копию нескольким адресатам используя массив или вызывая несколько раз эту команду.

// отправка одному адресату
$mail->BCC( "to@asd.com" );

// отправка нескольким адресатам используя массив
$bcc_array = array( "to1@asd.com", "to2@asd.com" );
$mail->BCC( $bcc_array );

// отправка нескольким адресатам без использования массива
$mail->BCC( "1@asd.com" );
$mail->BCC( "2@qwe.com" );


Body( текст письма, [ text | html ] )

В эту команду помещается текст письма. По умолчанию письмо формируется обычным текстовым, для отправки письма в формате html нужно нужно указать это во втором параметре.

$mail->Body( "Обычный текст, никакого html нет" );
ИЛИ
$mail->Body( "Письмо в формате html. <b>Жирный</b> текст.", "html" ); // в данном примере указан формат "html"



Attach( filename, [new filename], [mimetype], [disposition] )

Прикрепление файлов к письму. Чтобы прикрепить несколько файлов нужно просто повторять команду с нужными параметрами.
  • filename : путь к файлу на диске
  • new filename : какое имя будет у файла в письме. если ничего не указать, имя файла останется оригинальным.
  • mimetype : MIME-тип файла. Если не указать, то тип будет 'application/x-unknown-content-type'.
  • disposition : команда для почтового клиента, как ему отображать вложение.
    inline (по умолчанию), при просмотре письма вложение должно отображаться непосредственно в самом теле письма, например картинка.
    attachment, вложение не будет отображаться в самом письме, оно будет как прикрепленный файл.
    Не все почтовые программы обращают внимание на этот параметр.

// при прикрепелении файла ему дается другое имя в письме. так же указан mime тип файла
$mail->Attach( "/home/path/123.gif", "logo.gif", "image/gif" );

// при прикреплении письма не указано другое имя файла, поэтому имя останется не измененным. не указан mime тип. вариант отображения в почтовом клиенте указан как прикрепленный файл
$mail->Attach( "C:/Documents/resume.doc", "", "", "attachment" );



autoCheck( boolean )

Включает/выключает проверку email адресов на валидность. По умолчанию включено.

$mail->autoCheck( false ); // проверка выключена
$mail->autoCheck( true ); // проверка включена



Organization( организация )

Поле для указания вашей организации.

$mail->Organization( "Моя фирма" );


ReplyTo( email )

на какой email можно ответить.
Для добавления имен к адресам используйте разделитель ';' (виктор;victor@asd.com)

$mail->ReplyTo( "repl@asd.com" );


Priority( приоритет )

Приоритет письма. Важность. Дает информацию адресату понять, какие письма наиболее важны.
От 1 (высокая важность) до 5 (низкая важность).
Рекомендуемый приоритет 3.

$mail->Priority( 3 );


Receipt()

Подтверждение о прочтении.
Некоторые почтовые клиенты могут отправить на обратный адрес письмо о том, что ваше сообщение получено или читается.

$mail->Receipt();


Send()

Отправка письма. После всех команд выполняется эта, она отправит письмо.
$mail->Send();


Get()

Для тестирования.
Возвращает текст письма вместе с заголовками.
Можно использовать вместо отправки письма не используя отправку Send(), возвратит текст письма и заголовки, готовые к отправке.
Если использовать после отправки письма, так же возвратит заголовки и текст, но если отправка была с помощью smtp возвратит еще и весь далог общения с сервером.
Можно сохранять в файл для ведения логов или вывести на экран.

$msg = $mail->Get(); // получение в переменную
print $msg; // вывод в браузер



Комментарии

RSS комментарии


28.07.2010 Александр
Отличный скрипт. Пользуюсь им уже давно. Спасибо автору скрипта за такое нужное дело.



06.09.2010 Алексей
+1 Просто ничего лучше в жизни не видел! :) Автору просто зачет и огромное спасибо!



08.09.2010 Петро
Привет а форму как злабадать



18.12.2010 Дамир
Спасибо автору! Нужно было отправить файлы во вложении, через эту библиотеку все получилось просто и быстро:)



02.02.2011 Владимир
Автору респект



06.02.2011 Валентин
В версии PHP 5.2 выдает ошибку на функцию ereg.
Вы делает проверку емайла на валидность этой функцией.
А почему бы не проверять с помощью
filter_var($address, FILTER_VALIDATE_EMAIL)) ??



06.02.2011 админ
Валентин, спасибо за совет, внес поправки.
версия 1.5.1 - валидация email адресов адаптирована к старым и новым версиям PHP именно с помощью filter_var()



10.02.2011 Валентин
Не за что.
Спасибо за Класс, очень полезный.



17.02.2011 Александр
Добрый день.
Спасибо за класс.
Не подскажите как прикрепить динамически созданный файл? Например, файл pdf созданный с помощью tcpdf.
Спасибо.



17.02.2011 админ
Александр, к сожалению пока нет возможности отправить файл из буфера.
Перед отправкой сохраните файл физически, отправьте, а затем удалите его.



18.02.2011 Александр
Удалось отправить генерируемый pdf. Tcpdf позволяет получать документ в base64 mime multi-part



04.03.2011 MannishArt
спасибо автору больше,очень пригодилось)



04.03.2011 MannishArt
а вот хотел бы спросить,а как несколько аттачмантов сделать?



04.03.2011 Александр
Искал замену PHPMailer и вот нашёл замечательное решение. Спасибо! Сделано очень профессионально.



04.03.2011 Александр
Строка 564:
if (isset($this->smtp_log)) return $this->smtp_log; // если есть лог отправки smtp выведем его
Добавил функцию isset(), потому что без неё появлялась ошибка о необъявленном свойстве класса



05.03.2011 админ
MannishArt, чтобы несколько файлов прикрепить, просто несколько раз повторяйте команду $mail->Attach(), естественно с нужными параметрами.



05.03.2011 админ
Александр, ваш пример сработает даже в том случае, если $this->smtp_log=""
но это не много нарушает смысл этого условия.
Тогда лучше сделать так.

if(isset($this->smtp_log))
{
if ($this->smtp_log) return $this->smtp_log;
}

Спасибо за совет, я внес эту поправку в скрипт, только версию скрипта конечно не стал менять.



05.03.2011 MannishArt
Вот я написал в скрипте:
$m->Attach( "ПриходМарт(Разное).xls","", "attachment" ) ;
$m->Attach( "Mixer_march.jpg","", "attachment" ) ;
$m->Attach( "quote_march.txt","", "attachment" ) ;

А в письме приходит как:
(Разное).xls (560 Кб)
Mixer_march.jpg (2.5 Кб)
quote_march.txt (72 )
почему-то обрезается "ПриходМарт"



07.03.2011 MannishArt
а ещё можете подсказать,я отправляю из программы тему и заголовок скрипту,а в письме приходит Тема РїРёСЃСЊРјР° вот такое вот,это что-то с кодировкой?



07.03.2011 Илья
Да, возможно это проблемы с кодировкой. Попробуйте поменять, самые распространенные на данный момент это windows-1251 и UTF-8. Посмотрите в каком будет читаться и установите по умолчанию.


1 2 3 4 5

Добавить свой комментарий


Ваше имя(* обязательно)


Текст сообщения(* обязательно)









 
 
  запомнить

 
Copyright © 2003-2012 WeBi Constructor
Rambler's Top100