Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Модуль Mail::Sendmail 
:(
    Опции темы
HalkaR
  Дата 13.6.2003, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: нет
Всего: 42



Работа с модулем Mail::Sendmail очень проста. Данный модуль отсылает почту при помощи smtp сервера.
Вот небольшой пример.
Код
use Mail::Sendmail;


 %mail = ( To      => '[email protected]',                         #кому
                 From    => '[email protected]',         #от кого
                 Subject => 'Subj',                                      #Субджект
                 'Content-Type' => 'text/plain;  charset=win1251',     #Контент, зачем он нужен - потом
                 'Content-Transfer-Encoding' => '8bit',    
                 Message => 'Ура! Работает!',                  #Само сообщение
                 Smtp => smtp.mail.ru );                            #почтовый сервер


 sendmail(%mail) or die $Mail::Sendmail::error;        #Отправляем

 print "OK. Log says:\n", $Mail::Sendmail::log;              #Выясняем что получилось


Итак все просто. Сначала формируем хеш, в который можно закинуть все свойства письма (например можно добавить важность письма для Outgluc'a или название почтовика). Можно В текст написать html

тест, тогда надо заменить text/plain на text/html.
Вот еще кой-какие свойства:
Код
'X-Mailer' => 'Microsoft Outlook Express 6.00.2600.0000'
Date    => Mail::Sendmail::time_to_date( time() )
'X-MSMail-Priority' => 'High'.


Итак - вот первое письмо. А как же отправлять аттачмент? Так же. Только тип контента меняется на

'Content-Type' => "multipart/mixed; boundary=\"$boundary\" charset=win1251"

$boundary - это разделитель между отдельными частями письма (текст, файл).

$boundary = "====" . time() . "====";

Все письмо, и текст и файл отправляются в виде одного куска текста. Вот как он создается.

Код
$file = 'file.exe';                        #название файла
$boundary = '--'.$boundary;

$mail{body} = <<END_OF_BODY;       #Начало текста письма
$boundary
Content-Type: text/html; charset="koi8-r"
Content-Transfer-Encoding: 8bit

$message   #Текст
$boundary
Content-Type: application/octet-stream; name="$file"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="$file"

$file_text                   #файл считаный в переменню в бинарном режиме
$boundary--\n
END_OF_BODY           #Конец текста письма

файл считывается так:

Код
open (F, $file) or die "Cannot read $file: $!";
binmode F; undef $/;
$file_text = encode_base64(<F>);
close F;


В принципе все. Только не забудьте про кодировки - в различных почтовиках с ними могут быть проблемы. Возможно придется заменить win1251 на koi8-r и/или перекодировать тест.

Это сообщение отредактировал(а) HalkaR - 7.7.2003, 11:57
PM MAIL   Вверх
HalkaR
Дата 13.6.2003, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: нет
Всего: 42



Единственное но. Такой скрипт работает только с серверами, где нет проверки pop при отправке сообщений. И адресс отправителя писать надо настоящий иначе сервер не пустит. Я правда знаю один сервер вовсе без проверки, но это редкий случай.
PM MAIL   Вверх
rocknroll
Дата 21.6.2003, 13:38 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А сендмаилом как отправить через этот модуль?
  Вверх
HalkaR
Дата 21.6.2003, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: нет
Всего: 42



А причем тут sendamil?? В том то и дело что он не нужен!
PM MAIL   Вверх
rocknroll
Дата 22.6.2003, 15:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Сендмаил проще найти, чем SMTP без проверок. Точнее сендмаил даже искать не надо, он в юниксе стоит. Так вот хотелось бы узнать можно ли сендмаил заюзать как нибудь? Если нет, то как через сендмаил слать файло?
Благодарю зарание
  Вверх
Wowa
Дата 22.6.2003, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата
Сендмаил проще найти, чем SMTP без проверок. Точнее сендмаил даже искать не надо, он в юниксе стоит. Так вот хотелось бы узнать можно ли сендмаил заюзать как нибудь? Если нет, то как через сендмаил слать файло?
Благодарю зарание

Я думаю, этот вопрос надо задать в отдельной теме. А вообще, в ФАКе у нас на форуме это есть: http://forum.vingrad.ru/index.php?act=ST&f=34&t=2075
PM WWW   Вверх
HalkaR
Дата 22.6.2003, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: нет
Всего: 42



Цитата
Сендмаил проще найти, чем SMTP без проверок.
Ага - рассказывай! smile.gif Сендмейл он конечно есть везде, тока его тебе на бесплатном серваке точно не дадут или дадут но стакими ограничениями, что проще забить! А подходящих серваков куча - mail.ru к примеру. Через него отлично шлется, тока в поле from надо реальный ящик на mail.ru писать.
PM MAIL   Вверх
rocknroll
Дата 22.6.2003, 21:45 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я говорю про тот случай, когда у тебя на компе стоит юникс. А у меня так обычно и бывает =)
  Вверх
HalkaR
Дата 22.6.2003, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: нет
Всего: 42



Цитата
Я говорю про тот случай, когда у тебя на компе стоит юникс. А у меня так обычно и бывает =)
У тебя сервер дома?rolleyes.gif Тогда конечно - пожалуйста.
Кстати, если будешь слать SEndmail'ом то аттач (насколько я помню) делается точно также как и в моем примере. Принцип тотже.

Это сообщение отредактировал(а) HalkaR - 22.6.2003, 21:54
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0730 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.