Реклама на сайте  Реклама   
  Портал для веб-мастера: Учебники, скрипты, статьи, html-шаблоны, flash-исходники, каталог шрифтов, форумы...
Все для веб-мастера: статьи, учебники, шрифты, e-books
Навигация
  Главная
  Исходники
  Шаблоны
  Галерея
  Шрифты
  E-books
  Скрипты
  Статьи
  E-mail
  Хостинг

Рекомендуем


Имплантация стоматология, имплантация зубов стоимость. Имплантация зубов стоимость услуги.

Работа для веб-мастера

О статье:
Опубликована: 18.08.05
Прочтений: 4885
Символов: 3942
Размер шрифта:
Все для веб-мастера: статьи, учебники, шрифты, e-books
 
Статьи » Perl » Отправка письма из скрипта на перле   


Отправка письма из скрипта на перле

  • Автор: Philip A. Koryaka
  • Источник: www.perl.ru
  • Версия для печати
  • Скачать статью
  • Иногда при программировании для web, возникает необходимость отправить из скрипта на перле письмо. Существует несколько способов реализации этого.

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

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

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

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

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

    Суть данного способа в использовании стандартного перлового модуля: Net::SMTP. Расшифровывается он как: 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 <PM@HOST2.RU>\n"); # Указываем информацию для поля "Кому"
    $smtp->datasend("\n"); # Пустая строка
    $smtp->datasend("test message\n"); # Сообщение
    $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.

    Оглавление | Наверх
     
    Советуем!



    Счетчики


    На сайте Online:
    WMate.ru © 2004 - 2010
       Дизайн: Мурашов Олег
       CMS: PhpCh v 0.2
       Время выполения скрипта: 0.002