Гостевая
Форум
Разделы
Главная страница
Js скрипты
Php скрипты
Html шаблоны
Книги по Web дизайну
Статьи


Главная страница статей --> Советы по фотошопу, графике и хитрости в построении php кода

Net-SMTP

Источник: realcoding.net

Первый способ


Можно использовать программу sendamail. Мы просто открываем ее как обычный файл и на вход подаем определенные параметры. Например, так:

open (MAIL, " /usr/lib/sendmail pupkin@host.ru");
print MAIL "Subject: subjnn";
print MAIL "Text";
close(MAIL);

При использовании такого кода, мы сталкиваемся с проблемой. В пришедшем адресату письме будет указан обратный адрес www@host.ru или что-то в этом роде. Иногда, даже имя сервера не будет иметь ничего общего с именем вашего сервера и вот почему: Дело в том, что web-сервер обычно запущен из под определенного пользователя (www, nobody etc.) Соответствено, ваш скрипт тоже выполняется из под этого же пользователя (т.к. запускает его web-сервер а не вы). Sendmail определяет этого пользователя и указывает в поле обратный адрес его адрес. Иногда можно смериться с данной проблемой. Например, если скрипт посылает данные администратору сервера, которому в общем то все равно что будет указано в поле обратный адрес. Но если ваш скрипт взаимодействует с пользователями, лучше использовать второй способ.

Второй способ


Суть данного способа в использовании стандартного перлового модуля: м. Расшифровывается он как: Simple Mail Transfer Protocol Client. Т.е. клиент для работы с SMTP протоколом. Вот небольшой пример использования модуля Net::SMTP:

use Net::SMTP;                                # Подключаем модуль.
$smtp = Net::SMTP->new(smtp.mail.ru);       # Указываем SMTP сервер.
   
$smtp->mail(vasya@host.ru);                 # Указываем от кого письмо.
$smtp->to(pm@host2.ru);                     # Указываем кому письмо.
   
$smtp->data();                                # Начинаем посылку данных
$smtp->datasend("To: postmaster n");
# Указываем информацию для поля "Кому"
$smtp->datasend("n");                        # Пустая строка
$smtp->datasend("test messagen");            # Сообщение
$smtp->dataend();                             # Заканчиваем посылку даных
   
$smtp->quit;                                  # Закрываем соединение

Наверное, у вас возник вопрос, зачем указывать адресата два раза? Дело в том, что первый раз мы указываем куда отправить письмо. Второй раз - кому. Как правило, эти адреса совпадают, но могут и не совпадать. В этом случае письмо попадет по первому адресу. Пустая строка необходима, что бы отделить заголовок письма от текста. В заголовке, помимо адреса получателя могут быть еще и другие поля. Например:

Subject: Тема сообщения
X-Mailer: Почтовый клиент. Можно имитировать отправку с одного из известных почтовых клиентов.
Content-Type: Тип содержимого. По умолчанию текст. Но если указать: "Content-Type: text/html; charset=koi8-r", то содержимое письма будет обрабатываться у получателя как HTML.

Что же умеет класс Net::SMTP? Мы можем создавать соединение так как было указано выше, но иногда необходимо изменить параметры соединения. Тогда используется такой вызов:

$smtp = Net::SMTP->new(smtp.mail.ru,
           Hello => me.mail.ru
           Timeout => 30
           );

Здесь мы указываем, как нужно поздороваться с SMTP-сервером (иногда это необходимо) и максимальное время ожидания ответа сервера. По умолчанию этот параметр равен 120.

Теперь рассмотрим, все доступные нам методы класса Net::SMTP.
to ( адрес [, адрес ] ) - указывает получателя. Заметьте, что можно указывать как один, так и более e-mailов.
data () - инициирует отправку данных.
verify ( адрес ) - проверяет указанный адрес на лигитивность.
quit () - посылает серверу команду QUIT.



Похожие статьи:
- Краткий обзор некоторых возможностей MySQL. Советы по оптимизации.
- Поиск - простой и видимый
- Правила написания сообщений об ошибках
- PHP gzip module
- Применение cURL и libcurl в php
- Регулярные выражения, Часть I
- Perl и работа с сокетами
- Безопасно-ориентированное программирование в PHP5
- Создание индекса для сайта
- Счетчик посещений на Perl
- Python: Питон высокого полета...
- Семь изысканных рецептов для программистов
- Смогут ли пауки проиндексировать ваш web-сайт?


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |
[0.002]