13.5. Создание списка рассылки
13.5. Создание списка рассылки
Средствами Linux можно создать небольшую рассылку сообщений электронной почты. Для больших систем рассылки я не рекомендовал бы использовать вам этот метод. Обычно системы рассылки создаются средствами, специально предназначенными для этого, например, РНР в связке с MySQL идеально подходят для этого. Язык программирования РНР предназначен для создания Web-приложений и оснащен всеми необходимыми для этого функциями, а сервер баз данных MySQL обеспечит поддержку базы данных адресов подписчиков и параметры рассылки. Таким образом, если вы хотите создать собственный MailList.Ru, воспользуйтесь готовыми решениями или напишите собственную на РНР или Perl.
Однако иногда бывает полезно создать небольшую рассылку внутри одной организации. Приведенное далее решение не отличается оригинальностью и не претендует на звание лучшей системы рассылки. С помощью этого примера вы также узнаете, как использовать стандартную почтовую утилиту Linux — mail. Эта программа входит в состав практически каждой Unix-системы.
Итак, допустим у вас есть три отдела: отдел маркетинга, производственный отдел и администрация. К первому отделу относятся пользователи вашей системы marina и oleg, ко второму — igor, dmitry, olya, а к третьему — president, director, secretar. Периодически вам нужно отправлять сообщения в один из отделов. Число пользователей небольшое и, возможно, отправить сообщение можно было бы с помощью групп пользователей почтовой программы, которую вы используете. Однако сейчас я покажу, как элегантно это можно сделать средствами Linux. Тем более, что для этого не нужно устанавливать никаких почтовых программ.
Создайте файл .mailrc в вашем домашнем каталоге и добавьте в него строки:
alias market marina oleg
alias proizv igor dmitry olya
alias adm director secretar
В дальнейшем, чтобы отправить сообщение в производственный отдел просто введите команду:
mail proizv
Программа mail попросит вас ввести тему, а затем текст сообщения. Для окончания ввода нажмите Ctrl+D и mail отправит сообщения пользователям.
При создании псевдонимов убедитесь, что в вашей системе нет пользователей с таким именем.
Как видите, средствами одной программы mail вам удалось сделать немного. Если пользователей много, использовать механизм псевдонимов не очень удобно. Гораздо удобнее, чтобы программа mail брала список подписчиков из какого-нибудь файла. К сожалению, разработчики этой программы не предусмотрели такой возможности, однако с помощью небольшого сценария мы можем организовать эту возможность. Посмотрим, что из этого получится, если воспользоваться средствами интерпретатора команд bash.
Создайте сценарий smaller в своем домашнем каталоге (см. листинг 13.3).
Листинг 13.3. Сценарий smailer
#!/bin/bash
DT=`date`
echo $DT >> log
for user in `cat users`
do
echo "Sending message to $user"
mail $user –s Subscribe < msg 2>> log
done
Напомню, что сценарий — это обыкновенный текстовый файл с установленным атрибутом выполнения, содержащий команды интерпретатора. Более подробно сценарии рассматриваются в гл. 19, а сейчас попробую объяснить все на интуитивном уровне, чтобы вы поняли сам принцип работы вышеприведенного сценария.
В первой строке указывается, какой интерпретатор будет выполнять ваши команды — /bin/bash. Обратите внимание на одинарные кавычки, в которые заключена команда date. Это не обыкновенные кавычки, а те, которые расположены под знаком тильды «~». Во второй и третьей строках заносится дата в файл протокола log. Этот файл находится в домашнем каталоге.
Затем последовательно (в цикле for) читается список пользователей из файла users, который находится в домашнем каталоге, и передается имя пользователя программе mail. Программа mail поочередно отправит сообщение каждому пользователю из файла users. Тема сообщения устанавливается с помощью параметра –s, а само сообщение хранится в файле msg.
Весь поток ошибок перенаправляется в файл log. Вы можете переправить и все сообщения программы mail, удалив дескриптор 2 перед символами перенаправления ввода/вывода.
Теперь создайте файл users. Текст моего личного файла приведен в листинге 13.4.
Листинг 13.4 Файл users
den
u
synthetic
evg
Сообщения, которые вы хотите отправить, запишите в файл msg. Запустите сценарий командой:
./smaller
На экране вы должны увидеть следующую информацию:
Sending message to den
Sending message to u
Sending message to synthetic
Sending message to evg
Так как пользователя evg в моей системе нет, в файл протокола будет записано соответствующее сообщение:
Сбт Май 4 10:43:28 EEST 2002
evg… User unknown /root/dead.letter…
Saved message in /root/dead.letter
На экран не будет выведено сообщение об ошибке, потому что мы перенаправили стандартный поток ошибок в файл log. Как видите, все предельно просто.
Программу mail можно использовать и для чтения почты. Для этого просто введите команду:
Если в вашем почтовом ящике нет сообщений, программа сообщит вам об этом:
No mail for user
где user — это ваше имя пользователя.
Если будут новые сообщения, программа выведет на экран нумерованный список, и вы сможете ввести номер сообщения, которое хотите прочитать. Для удаления сообщения используется команда d <номер> или d <диапазон>. Выйти из программы можно, введя команду q.
Использовать программу mail в качестве полноценной почтовой программы нельзя — она работает только с вашим локальным ящиком, поэтому если вам нужно будет получить сообщения откуда-то извне, скажем pop.mail.ru, вы не сможете сделать это. Я бы вам порекомендовал использовать программу kmail. которая входит в состав KDE. Данная программа поддерживает несколько учетных записей электронной почты, в том числе и локальный ящик, отправку сообщений с помощью SMTP и локального агента MTA (sendmail), а также сообщения в формате HTML, что является немаловажным, когда пользователи Outlook забывают включить текстовый формат для исходящих сообщений.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Создание маркированного списка
Создание маркированного списка Напомним, что маркированный список задается с помощью тегов <ul>
Создание нумерованного списка
Создание нумерованного списка Напомним, что нумерованный список задается с помощью тегов
Создание списка: <fo:list-block>
Создание списка: <fo:list-block> Для начала воспользуйтесь элементом <fo:list-block>, чтобы создать список XSL-FO; этот объект содержит элементы <fo:list-item>, содержащие данные списка.С элементом <fo:list-block> можно применять следующие свойства:• общие свойства доступа: source-document,
Создание элементов списка: <fo:list-item>
Создание элементов списка: <fo:list-item> Затем при помощи элемента <fo:list-item> нужно поместить в список метку и тело элемента списка. В каждом элементе списка должен присутствовать один из этих объектов.С элементом <fo:list-item> можно применять следующие свойства:• общие
Создание меток элемента списка: <fo:list-item-label>
Создание меток элемента списка: <fo:list-item-label> Метка для элемента списка создается элементом <fo:list-item-label>, при помощи которого можно перенумеровать или пометить дело элемента списка.К элементу <fo:list-item-label> можно применять следующие свойства:• общие свойства
Создание тел элементов списка: <fo:list-item-body>
Создание тел элементов списка: <fo:list-item-body> Для включения тела элемента списка служит элемент <fo:list-item-body>. Заметьте, что для форматирования тела элемента списка требуемым вам образом вы можете включить в элемент <fo:list-item-body> объект <fo:block>.С элементом
Списки рассылки
Списки рассылки Электронная почта может использоваться не только для общения нескольких людей между собой. Дополнительные области применения электронной почты позволяют решить другие задачи, связанные с общением пользователей между собой и с обменом
14.5. Создание списка рассылки
14.5. Создание списка рассылки Обычно системы рассылки создаются специально предназначенными для этого средствами: например, идеально подходят PHP в связке с MySQL.Язык программирования PHP предназначен для создания веб-приложений и оснащен всеми необходимыми для этого
Рассылки
Рассылки Эта вкладка в меню создана для облегчения электронной и обычной
9.3. Создание безопасного при исключениях списка инициализации
9.3. Создание безопасного при исключениях списка инициализации ПроблемаНеобходимо инициализировать ваши данные-члены в списке инициализации конструктора, и поэтому вы не можете воспользоваться подходом, описанным в рецепте 9.2.РешениеИспользуйте специальный формат
Создание односвязного списка
Создание односвязного списка Это тривиальная задача. В самом простом случае первый узел в связном списке описывает весь список. Первый узел иногда называют головой списка.varMyLinkedList : PSimpleNode;Если MyLinkedList содержит nil, списка еще нет. Таким образом, это начальное значение
Пример 10-6. Создание списка аргументов в цикле for с помощью операции подстановки команд
Пример 10-6. Создание списка аргументов в цикле for с помощью операции подстановки команд #!/bin/bash# уЩЫЬ for гЯ [гаЩгЫЯЭ], гЯкФСЮЮйЭ г аЯЭЯниР аЯФгдСЮЯзЫЩ ЫЯЭСЮФ.NUMBERS="9 7 3 8 37.53"for number in `echo $NUMBERS` # for number in 9 7 3 8 37.53do echo -n "$number "doneecho exit 0Более сложный пример использования подстановки
Списки рассылки
Списки рассылки Говоря о применении электронной почты, необходимо упомянуть еще о таком достаточно популярном средстве общения, как списки рассылки.Приведу один пример. На русскоязычном сайте, посвященном свободному офисному пакету OpenOffice.org, организован список
4.2.4. Создание групповых списков рассылки
4.2.4. Создание групповых списков рассылки Используя групповые списки рассылки, вы сможете одним щелчком мыши отправить сообщения сразу всем адресатам, входящим в одну конкретную группу. Для создания группы необходимо выполнь следующее:1. Щелкнуть по кнопке «+»,
4.3.3. Создание списка задач, принятых к исполнению
4.3.3. Создание списка задач, принятых к исполнению Каждый календарь может иметь свой набор задач, принятых к исполнению. Перечень задач отображается на панели, которая раскрывается нажатием на кнопку: Чтобы создать задачу, необходимо:1. Выбрать требуемый календарь на