Наши
Сайдбары
   
IRC-канал
Linuxportal.ru
   
Импорт новостей
 
Вход Быстрая регистрация На главную

Поиск:
 
   БИБЛИОТЕКА
     Другие статьи этого раздела:
 

    Сеть
Другие разделы библиотеки:
   БИБЛИОТЕКА
     последние поступления:
 

Hardware
Перевод Serial-Programming-HOWTO
15.05.2006 | San АНДРЕЕВ
Перевод Linux Power Management Support
03.04.2004 | San АНДРЕЕВ
Варианты решения проблем со смещением геометрии монитора.
10.10.2003 | EsTaF
Multimedia
VideoCD для пингвинов
10.10.2003 | Buddha
Смотрим любимые фильмы с помощью MPlayer
23.07.2003 | Alexey Dmitriev
X-сервер
Включаем Bytecode Interpreter в пакете freetype в некоторых дистрибутивах
05.07.2006 | Alexey Dmitriev
НАСТРОЙКА СЕРВЕРА XDMCP ДЛЯ WINDOWS-КЛИЕНТОВ
09.09.2004 | Kotjara
Type1 и truetype шрифты в LaTeX.
03.05.2004 | geekkoo
Разное
Как самому написать концепцию информационной безопасности
22.03.2007 | Crion
Список рекомендуемой литературы
11.09.2006 | San АНДРЕЕВ
The Multi Router Traffic Grapher
02.06.2004 | Crion
Сеть
"Огненная стена" или строим файрвол на базе iptables
15.03.2005 | Alexey Dmitriev
Защищенная почтовая система
08.09.2004 | Crion
Postfix+Cyrus-SASL
18.12.2003 | geekkoo
Система
Написание драйверов под Linux: рекомендации, типичные ошибки и ловушки.
16.01.2007 | Mr.Nobody
Перевод Linux Daemon HOWTO
21.08.2006 | San АНДРЕЕВ
Усыпляем компьютер
11.01.2006 | San АНДРЕЕВ
   БИБЛИОТЕКА Сеть    
Автор статьи: Alexey Dmitriev
Дата: 30.07.2003

Как из командной строки отправить письмо с прикрепленным файлом

Статья представляет собой обобщение темы форума с одноименным названием.
Было предложено несколько рабочих вариантов.
Первый предложен ezhikov и основан на использовании perl.

Формируй тело сообщения из perl
#!/usr/bin/perl

# путь к sendmail
$mailprog = "/usr/sbin/sendmail";

# путь к файлу с указанием имени файла
$attach_file = "/path/to/file.gz";

# имя файла
$filename = "file.gz";

# MIME-граница для разделения различных частей MIME-сообщения.
# Просто уникальная строка
$boundary = "ABRACADARBRA".time;

# получатель
$to = 'email@domain.ru';

# отправитель
$from = 'mailbox@somedomain.ru';

# Имя отправителя
$name = "Имя отправителя";

# тема сообщения
$subject = 'Тема сообщения';

# текстовое сообщение, помещается в тело письма
$message = 'Некоторое текстовое сообщение';

open (MAIL, "|$mailprog -t");
print MAIL <
From: $name<$from>
To: $to
Subject: $subject
X-mail-agent: Crond mailer
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="$boundary"

--$boundary
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

$message
--$boundary
Content-Type: application/octet-stream; name="$filename"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="$filename"

END

# кодируем присоединенный файл по стандарту Base64.
# Для этого вызываем подпрограмму base64_encode_file с именем файла.
$binary_encoded_data = &base64_encode_file($attach_file);

# Вставляем закодированное содержимое файла
print MAIL <
$binary_encoded_data
--$boundary--
.
END
close MAIL;

ну и подпрограмма кодирования base 64

sub base64_encode_file {

local($file) = $_[0];
local($encoded, $line) = '';
local($len, $bytes, $pad) = 0;

open (DATA, "<$file");
while ($bytes = read(DATA, $line, 45)) {
$len += $bytes;
$encoded .= substr(pack('u', $line), 1);
chop($encoded);
}

$encoded =~ tr| -_`|A-Za-z0-9+/A|;
$pad = (3 - ($len % 3)) % 3;
substr($encoded, -$pad, $pad) = '=' x $pad;
$encoded =~ s/(.{76})/$1\n/g;
return($encoded);
}

Второй вариант был предложен kaboom и основан на использовании консольного почтового клиента mutt.

mutt email@address -a прикрепленный_файл -s "Тема письма" < файл_содержащий_текст_письма

Или вариант 2, модифицированный Материалист
echo "текст письма" | mutt email@address -a прикрепленный_файл -s "Тема письма".

Третий вариант предложен Dr.Spectre.
cat text.txt | uuencode text.txt | mail -s TEST email@address
или вариант 3, модифицированный Ananas, который сжимает прикрепленный файл для уменьшения размера письма
gzip -c text | uuencode text.gz | mail -s TEST email@address

Автор темы - Материалист в поисках нашел специальную утилиту для отправки писем с прикрепленными файлами - Biabam (находится здесь



Все статьи раздела "Сеть"

©"Linuxportal.Ru". Материалы сайта можно
использовать свободно при условии
сохранения этой свободы при дальнейшем
распространении, если явно не указано иное

Дизайн и программирование:

Поставьте
нашу кнопку:
Получить код кнопки
Linux Portal.ru ::: Линукс Портал.ру
Наш партнер: