Анимация
JavaScript
|
Главная Библионтека Не отправляйто электронной почте за один раз слишком объемные сообщения (даже если они были затребованы). Во-первых, буфер вашего локального почтового сервера может переполниться. При этом местный провайдер наверняка временно закроет вашу учетную запись, чтобы справиться с неполадками. Во-вторых, если ваше сообщение вызовет перегрузку почтового сервера получателя, удаленный провайдер может просто заблокировать всю электронную почту, поступающую из вашего домена. Потеря возможности пос1лать что-либо таким крупным доменам, как aol.com, hotmail.com, может плачевно сказаться на вашем бизнесе. Боле того, вполне вероятно, что ваш провайдер закроет вашу учетную запись и выставит вам дополнительный счет. • Позаботьтесь об указании корректного обратного адреса в заголовках From: и Reply То: сообщения электронной почты. Существует возможность использования Perl для подделки электронной почты, но подделка не содержит цепочки адресов почтовых серверов, через которые прошло сообщение. Однако учтите, что вы можете нажить себе серьезные неприятности, подделывая почтовые сообщения. • Всегда используйте свой собственный почтовый сервер. Злоупотребление почтовыми серверами других провайдеров быстро приведет к закрытию вашей учетной записи и, возможно, даже к предъявлению вам дополнительного счета. • Не отправляйте ничего не подозревающим людям огромных или большого числа маленьких сообщений. Это называется почтовой бомбардировкой (mailbombing) и, скорее всего, закончится аннулированием ващей учетной записи провайдером и может вызвать неприятности в области правовых норм. Практически все эти советы являются не просто "правилами хорошего тона", или сетевого этикета. Нарушение некоторых из перечисленных правил может привести к прекращению обслуживания вас провайдером Internet и/или повлечь правовую ответственность за ущерб, нанесенный получателям вашей почты. При создании учетной записи провайдер, скорее всего, предупредит вас о том, что любой из вышеперечисленных факторов послужит основанием для ее аннулирования, и, возможно, вы будете нести личную ответственность за нанесенный ущерб. Золотое правило: быть консерватором, когда вы отправляете что-то другим, и либералом по отношению к тому, что вы получаете. Для Internet характерна очень долговременная коллеивная память. Тех, кто действительно злоупотреблял почтовой службой, помнят очень долго и не хотят иметь с ними дела. Помните, что испорченную репутацию очень трудно потом исправить. Программные средства организации почтовой службы Цель следующих разделов - написать на Perl короткую функцию, которую можно использовать в CGI-программах для отправки почтовых сообщений. Однако существует одна проблема: работа такой функции зависит от того, имеется ли в ващей системе агент нередачи почты (такой, как sendmail), либо программа напрямую должна отправлять почту по протоколу SMTP ближайшему серверу. Поэтому бегло просмотрите следующие разделы и решите, какой из них вам понадобится для реализации конкретной программы. Отправка почты в системах UNIX Если вы работаете в системе UNIX и у вас корректно настроена программа sendmail (а так оно и должно быть!), это именно тот раздел, который вам нужен. Если же какая-либо из необходимых составляющих (система UNIX или программа sendmail) отсутствует и вы читаете этот раздел лишь из любознательности, то заслуживаете всяческих похвал. Однако в этом случае функция, представленная в листинге 22.1, скорее всего, вам не подойдет. Даже если вы работаете в системе UNIX, вам все равно стоит прочесть следующий раздел, "Отправка почты не из системы UNIX". В нем рассматривается новый метод использования объектно-ориентированного модуля. Листинг 22.1. Функция send mail 1: f нкццга слпрешки хзты с 1<сщью хрстрЕиуг/ы 1 {seitEdl) 2: sub send mail { 3: my{$to, $fiCTi, ?subject, !body)=e ; 4: 5: t Изувзиге слацо сярау в оооЕведстняя с вапЕЙ сьедзусй 6: шу Ssendmail="/usr/lib/sendjnail -t -ci -odq"; 8: open (HAIL, "$saritBil") II die "Clip 11И затеке прсграм senail: !"; 9: padnt HAIL«E1ID OFJEADER; 10: S:m 11: To: $to 12: Subject: Ssubject 13: 14: END OF HEADEK 15: foreach (body) { 16: Eint "$ \"; 17: } 18: close(HAIL); 19: \ "Xi, -1 "Jr Проведем анализ программы. • Строка б. Переменное mail присваивается значение полного пути к программе sendmail и необходимые аргументы для ее запуска. Учтите, что программа sendmail может находиться в другом каталоге вашей системы или иметь другие аргументы. • Строка 8. Открывается конвейер для записи информации в стандартный входной поток программы sendmail, полный путь и параметры которой указаны в переменной Ssendmail. Конвейеру назначается дескриптор файла • Строки 9-14. Заголовок почтового сообщения выводится в дескриптор • Строка 17. Тело сообщения записывается в дескриптор Вконец каждой строки добавляется символ Хп. Чтобы протестировать эту функцию, просто вызовите ее с набором из четырех аргументов: «Ьо<1у=("Похапуйста, прекратите интриги!", "Спасибо!*); send mail(presideiitevhitebouBe.gov, owneregeeksaXad.org, "Taxes, ebody); При вызове этой функции считается, что программа sendmail должна уже быть корректно установлена и настроена для работы в вашей системе. Если она отсутствует, переходите к следующему разделу, "Отправка почты пё из системы UNIX", поскольку представленное там решение должно работать также и под управлением системы Вам нужно будет изменить значение переменной $sendmail в соответствии с действительным расположением программы в вашей системе. Она может нахо-литься в одпой из таких папок, как /usr/lib, /usr/sbin и /lib, или в любой другой. Для поиска используйте команду whereis sendmail. Если что-то работает не так, как вы ожидали, убедитесь в корректной работе службы электронной почты вашей системы. Попытайтесь отправить контрольное сообщение с помощью одной из почтовых утилит, как, например, mail или pine. Если эти утилиты не работают надлежащим образом, то маловероятно, что программа sendmail установлена корректно. Приступая к работе, вам придется устранить эту проблему или использовать метод, описанный в следующем разделе. В листинге 22.1 программа sendmail запускается с использованием описанных ниже параметров, причем вы можете изменить их по своему усмотрению. -t Поля заголовка ш, То, Subject и т.д.) берутся из входных данных, а не из командной строки. Единственный символ точки, расположенный в начале строки, не считается признаком конца сообщения. Этот ключ позволяет предотвратить случайное завершение сообщения. -odq Программа sendmail помещает сообщения в очередь, а не пытается отправить их немедленно. При желании эту опцию можно не использовать. Но если будет отправлено одновременно слишком много сообщений, ваша почтовая система может быть перефужена запросами. Более корректно все-таки использовать ключ -odq. Остальная часть функции говорит "сама за себя". Отправка почты не из системы UNIX При работе под управлением Windows и других операционных систем, в которых нет встроенной программы-агента МТА типа sendmail, вам не избежать определенных трудностей. Программы МТА не так уж просты, и попытка скопировать их действия с помощью нескольких строк Perl оказывается не из легких. Тем не менее это осуществимо. Сначала хорошая новость: в есть специальный модуль который позво- ляет отправлять почту из операционньгх систем любого типа, в которых могут работать Perl-профаммы. Используя этот модуль, можно отправить почту без особых усилий. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 [ 106 ] 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |