The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Отправлять почту с аттачем"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Отправлять почту с аттачем"
Сообщение от alexeylomov Искать по авторуВ закладки(ok) on 01-Мрт-05, 17:30  (MSK)
Здравствуйте. Мне нужно скриптом на Перл отправлять почту с аттачем и текстом.
С текстом у меня всё получается, а вот с аттачем никак не могу разобраться.
Киньте, пожалуйста, ссылочку, где можно подробно про это почитать, или объясните как аттач работает.
Поиском много примеров находил, но там везде аттач без текста, а сделать также, но с текстом у меня не получается.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Отправлять почту с аттачем"
Сообщение от alexeylomov Искать по авторуВ закладки(ok) on 01-Мрт-05, 18:51  (MSK)
Или просто посмотрите, и скажите что не так?
open( SENDMAIL, "|/usr/sbin/sendmail -t" );
print SENDMAIL "To: $email\n";
print SENDMAIL "From: SELFMAILER\n";
print SENDMAIL "Subject: $subject\n\n";
print SENDMAIL "MIME-Version: 1.0\n";
print SENDMAIL "Content-Type: multipart/mixed; boundary=\"NEWMAIL\"\n";
print SENDMAIL "--NEWMAIL\n";
print SENDMAIL "Content-Type: text/plain; charset=\"koi8-r\"\n";
print SENDMAIL "Content-Transfer-Encoding: 8bit\n";
print SENDMAIL "Current time:$time\nMessage:\n";
foreach $str( @str ) { print SENDMAIL $str; }
print SENDMAIL "--NEWMAIL\n";
print SENDMAIL "Content-Type: application/unknown; name=$file\n";
print SENDMAIL "Content-Transfer-Encoding: base64\n";
print SENDMAIL "--NEWMAIL--";
close( SENDMAIL );
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Отправлять почту с аттачем"
Сообщение от unk Искать по авторуВ закладки(ok) on 01-Мрт-05, 18:58  (MSK)
>print SENDMAIL "Subject: $subject\n\n";
На вскидку: один \n лишний.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Отправлять почту с аттачем"
Сообщение от alexeylomov Искать по авторуВ закладки(ok) on 01-Мрт-05, 19:01  (MSK)
>>print SENDMAIL "Subject: $subject\n\n";
>На вскидку: один \n лишний.


Убрал, теперь вообще пустое письмо пришло...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Отправлять почту с аттачем"
Сообщение от unk Искать по авторуВ закладки(ok) on 01-Мрт-05, 19:18  (MSK)
>>>print SENDMAIL "Subject: $subject\n\n";
>>На вскидку: один \n лишний.
>Убрал, теперь вообще пустое письмо пришло...
>>>print SENDMAIL "Content-Type: multipart/mixed; boundary=\"NEWMAIL\"\n";
Ну добавьте "\n" в конец строки


>>>print SENDMAIL "--NEWMAIL\n";
И здесь "\n" в начало. (это второй --NEWMAIL)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Отправлять почту с аттачем"
Сообщение от alexeylomov Искать по авторуВ закладки(ok) on 01-Мрт-05, 19:33  (MSK)
>>>>print SENDMAIL "Content-Type: multipart/mixed; boundary=\"NEWMAIL\"\n";
>Ну добавьте "\n" в конец строки

Ещё один? Хорошо, добавил.

>>>>print SENDMAIL "--NEWMAIL\n";
>И здесь "\n" в начало. (это второй --NEWMAIL)

Готово.

Получилось:
open( SENDMAIL, "|/usr/sbin/sendmail -t" ) or die "Can't fork for sendmail: $!\n";
print SENDMAIL "To: $email\n";
print SENDMAIL "From: SELFMAILER\n";
print SENDMAIL "Subject: $subject\n";
print SENDMAIL "MIME-Version: 1.0\n";
print SENDMAIL "Content-Type: multipart/mixed; boundary=\"NEWMAIL\"\n\n";
print SENDMAIL "--NEWMAIL\n";
print SENDMAIL "Content-Type: text/plain; charset=\"koi8-r\"\n";
print SENDMAIL "Content-Transfer-Encoding: 8bit\n";
print SENDMAIL "Current time:$time\nMessage:\n";
foreach $str( @str ) { print SENDMAIL $str; }
print SENDMAIL "\n--NEWMAIL\n";
print SENDMAIL "Content-Type: application/unknown; name=$file\n";
print SENDMAIL "Content-Transfer-Encoding: base64\n";
print SENDMAIL "--NEWMAIL--\n";

Только опять пустое письмо пришло...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Отправлять почту с аттачем"
Сообщение от unk Искать по авторуВ закладки(ok) on 01-Мрт-05, 19:46  (MSK)
>Только опять пустое письмо пришло...
Не поленился запустил:
#!/usr/local/bin/perl
$email="unk\@localhost";
$subject="test";
$time="HH:MM:SS";
@str=("foo\n", "bar\n", "zuka\n");
$file="foo.bar";
open( SENDMAIL, "|/usr/sbin/sendmail -t" ) or die "Can't fork for sendmail: $!\n";
print SENDMAIL "To: $email\n";
print SENDMAIL "From: SELFMAILER\n";
print SENDMAIL "Subject: $subject\n";
print SENDMAIL "MIME-Version: 1.0\n";
print SENDMAIL "Content-Type: multipart/mixed; boundary=\"NEWMAIL\"\n\n";
print SENDMAIL "--NEWMAIL\n";
print SENDMAIL "Content-Type: text/plain; charset=\"koi8-r\"\n";
print SENDMAIL "Content-Transfer-Encoding: 8bit\n";
print SENDMAIL "Current time:$time\nMessage:\n";
foreach $str( @str ) { print SENDMAIL $str; }
print SENDMAIL "\n--NEWMAIL\n";
print SENDMAIL "Content-Type: application/unknown; name=$file\n";
print SENDMAIL "Content-Transfer-Encoding: base64\n";
foreach $str( @str ) { print SENDMAIL $str; }
print SENDMAIL "--NEWMAIL--\n"
<EOF>
У меня работает как положено.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Отправлять почту с аттачем"
Сообщение от alexeylomov Искать по авторуВ закладки(ok) on 01-Мрт-05, 19:51  (MSK)
>>Только опять пустое письмо пришло...
>Не поленился запустил:
>#!/usr/local/bin/perl
>$email="unk\@localhost";
>$subject="test";
>$time="HH:MM:SS";
>@str=("foo\n", "bar\n", "zuka\n");
>$file="foo.bar";
>open( SENDMAIL, "|/usr/sbin/sendmail -t" ) or die "Can't fork for sendmail: $!\n";
>
>print SENDMAIL "To: $email\n";
>print SENDMAIL "From: SELFMAILER\n";
>print SENDMAIL "Subject: $subject\n";
>print SENDMAIL "MIME-Version: 1.0\n";
>print SENDMAIL "Content-Type: multipart/mixed; boundary=\"NEWMAIL\"\n\n";
>print SENDMAIL "--NEWMAIL\n";
>print SENDMAIL "Content-Type: text/plain; charset=\"koi8-r\"\n";
>print SENDMAIL "Content-Transfer-Encoding: 8bit\n";
>print SENDMAIL "Current time:$time\nMessage:\n";
>foreach $str( @str ) { print SENDMAIL $str; }
>print SENDMAIL "\n--NEWMAIL\n";
>print SENDMAIL "Content-Type: application/unknown; name=$file\n";
>print SENDMAIL "Content-Transfer-Encoding: base64\n";
>foreach $str( @str ) { print SENDMAIL $str; }
>print SENDMAIL "--NEWMAIL--\n"
><EOF>
>У меня работает как положено.

Круто. Повезло :) А у меня не работает... Пойду рвать на себе волосы...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "Отправлять почту с аттачем"
Сообщение от unk Искать по авторуВ закладки(ok) on 01-Мрт-05, 19:55  (MSK)
>Круто. Повезло :) А у меня не работает... Пойду рвать на себе
>волосы...
Когда закончите, то вместо sendmail -t запишите письмо в файл и покажите что у вас получается.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "Отправлять почту с аттачем"
Сообщение от alexeylomov Искать по авторуВ закладки(ok) on 01-Мрт-05, 20:00  (MSK)
>>Круто. Повезло :) А у меня не работает... Пойду рвать на себе
>>волосы...
>Когда закончите, то вместо sendmail -t запишите письмо в файл и покажите
>что у вас получается.

Вот такой текстовый файл получается:
To: alexey@alexhost.ru
From: SELFMAILER
Subject: Testing Attachment
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="NEWMAIL"

--NEWMAIL
Content-Type: text/plain; charset="koi8-r"
Content-Transfer-Encoding: 8bit
Current time:Tue Mar  1 19:28:56 MSK 2005
Message:
privet :)

--NEWMAIL
Content-Type: application/unknown; name=/home/admin/file.err
Content-Transfer-Encoding: base64
--NEWMAIL--

  Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "Отправлять почту с аттачем"
Сообщение от unk Искать по авторуВ закладки(ok) on 01-Мрт-05, 20:05  (MSK)
>Вот такой текстовый файл получается:
>Content-Transfer-Encoding: 8bit
Если ниже должно начинаться письмо то после 8bit добавьте \n

>Current time:Tue Mar  1 19:28:56 MSK 2005
>--NEWMAIL
>Content-Type: application/unknown; name=/home/admin/file.err
>Content-Transfer-Encoding: base64
Сюда тоже "\n"
И собственно атач не плохобы вставить.
>--NEWMAIL--

  Рекомендовать в FAQ | Cообщить модератору | Наверх

14. "Отправлять почту с аттачем"
Сообщение от alexeylomov Искать по авторуВ закладки(ok) on 01-Мрт-05, 20:17  (MSK)
>>Вот такой текстовый файл получается:
>>Content-Transfer-Encoding: 8bit
>Если ниже должно начинаться письмо то после 8bit добавьте \n
>
>>Current time:Tue Mar  1 19:28:56 MSK 2005
>>--NEWMAIL
>>Content-Type: application/unknown; name=/home/admin/file.err
>>Content-Transfer-Encoding: base64
>Сюда тоже "\n"
>И собственно атач не плохобы вставить.
>>--NEWMAIL--

Ок. Сделал.
Теперь письмо приходит.  И текст и файл (пока пустой). Спасибо.
И вопрос тогда сразу, можно ли несколько аттачей в один Content-Type вписать, или надо каждому вложенному файлу писать  --NEWMAIL ?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

15. "Отправлять почту с аттачем"
Сообщение от unk Искать по авторуВ закладки(ok) on 01-Мрт-05, 20:30  (MSK)
>И вопрос тогда сразу, можно ли несколько аттачей в один Content-Type вписать,
>или надо каждому вложенному файлу писать  --NEWMAIL ?
Если Content-Type что то вроде "text/plain" то можно, иначе лучше делать отдельную секцию.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "Отправлять почту с аттачем"
Сообщение от alexeylomov Искать по авторуВ закладки(ok) on 01-Мрт-05, 19:57  (MSK)
>>Только опять пустое письмо пришло...
>Не поленился запустил:
>#!/usr/local/bin/perl
>$email="unk\@localhost";
>$subject="test";
>$time="HH:MM:SS";
>@str=("foo\n", "bar\n", "zuka\n");
>$file="foo.bar";
>open( SENDMAIL, "|/usr/sbin/sendmail -t" ) or die "Can't fork for sendmail: $!\n";
>
>print SENDMAIL "To: $email\n";
>print SENDMAIL "From: SELFMAILER\n";
>print SENDMAIL "Subject: $subject\n";
>print SENDMAIL "MIME-Version: 1.0\n";
>print SENDMAIL "Content-Type: multipart/mixed; boundary=\"NEWMAIL\"\n\n";
>print SENDMAIL "--NEWMAIL\n";
>print SENDMAIL "Content-Type: text/plain; charset=\"koi8-r\"\n";
>print SENDMAIL "Content-Transfer-Encoding: 8bit\n";
>print SENDMAIL "Current time:$time\nMessage:\n";
>foreach $str( @str ) { print SENDMAIL $str; }
>print SENDMAIL "\n--NEWMAIL\n";
>print SENDMAIL "Content-Type: application/unknown; name=$file\n";
>print SENDMAIL "Content-Transfer-Encoding: base64\n";
>foreach $str( @str ) { print SENDMAIL $str; }
>print SENDMAIL "--NEWMAIL--\n"
><EOF>
>У меня работает как положено.

Что, реально приходит письмо с текстом
foo
bar
zuka
и присоединённым foo.bar ?
У меня 1 в 1 так же написано, и не приходит (точнее приходит пустое)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Отправлять почту с аттачем"
Сообщение от alexeylomov Искать по авторуВ закладки(ok) on 01-Мрт-05, 19:47  (MSK)
>Получилось:
>open( SENDMAIL, "|/usr/sbin/sendmail -t" ) or die "Can't fork for sendmail: $!\n";
>
>print SENDMAIL "To: $email\n";
>print SENDMAIL "From: SELFMAILER\n";
>print SENDMAIL "Subject: $subject\n";
>print SENDMAIL "MIME-Version: 1.0\n";
>print SENDMAIL "Content-Type: multipart/mixed; boundary=\"NEWMAIL\"\n\n";
>print SENDMAIL "--NEWMAIL\n";
>print SENDMAIL "Content-Type: text/plain; charset=\"koi8-r\"\n";
>print SENDMAIL "Content-Transfer-Encoding: 8bit\n";
>print SENDMAIL "Current time:$time\nMessage:\n";
>foreach $str( @str ) { print SENDMAIL $str; }
>print SENDMAIL "\n--NEWMAIL\n";
>print SENDMAIL "Content-Type: application/unknown; name=$file\n";
>print SENDMAIL "Content-Transfer-Encoding: base64\n";
>print SENDMAIL "--NEWMAIL--\n";
>
>Только опять пустое письмо пришло...

Кстати, примечание: если при этом после Subject: $subject\n написать ещё \n то приходит письмо с текстом
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="NEWMAIL"

--NEWMAIL
Content-Type: text/plain; charset="koi8-r"
Content-Transfer-Encoding: 8bit
Current time:Tue Mar  1 19:08:32 MSK 2005
Message:
privet

--NEWMAIL
Content-Type: application/unknown; name=/home/admin/file.err
Content-Transfer-Encoding: base64
--NEWMAIL--

Забавно...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Отправлять почту с аттачем"
Сообщение от unk Искать по авторуВ закладки(ok) on 01-Мрт-05, 19:50  (MSK)
>Кстати, примечание: если при этом после Subject: $subject\n написать ещё \n  
>приходит письмо с текстом
А что вас удивляет???
^\n\r это разделитель между заголовком и телом в письме.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

16. "Отправлять почту с аттачем"
Сообщение от Simps Искать по авторуВ закладки(ok) on 02-Мрт-05, 09:24  (MSK)
>>Кстати, примечание: если при этом после Subject: $subject\n написать ещё \n  
>>приходит письмо с текстом
>А что вас удивляет???
>^\n\r это разделитель между заголовком и телом в письме.

Всегда поражали люди игнорирующие CPAN и изобретающие велосипед =)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

17. "Отправлять почту с аттачем"
Сообщение от unk Искать по авторуВ закладки(ok) on 02-Мрт-05, 09:37  (MSK)
>Всегда поражали люди игнорирующие CPAN и изобретающие велосипед =)
У каждого свой выбор :) Если человеку хочется, то почему бы и нет...
А так смотрите:
Идем на CPAN берем MIME-tools, смотрим - оно хочет IO-stringy, MailTools, TimeDate, Unicode-Map и Unicode-String; Эти модули потянут еще минимум 10 модулей.
Не много ли для отправки одного простенького письмеца?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

18. "Отправлять почту с аттачем"
Сообщение от Simps Искать по авторуВ закладки(ok) on 02-Мрт-05, 10:04  (MSK)
>>Всегда поражали люди игнорирующие CPAN и изобретающие велосипед =)
>У каждого свой выбор :) Если человеку хочется, то почему бы и
>нет...
>А так смотрите:
>Идем на CPAN берем MIME-tools, смотрим - оно хочет IO-stringy, MailTools, TimeDate,
>Unicode-Map и Unicode-String; Эти модули потянут еще минимум 10 модулей.
>Не много ли для отправки одного простенького письмеца?

Понимаю =) Проще вот уже 4-й день париться =)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

19. "Отправлять почту с аттачем"
Сообщение от unk Искать по авторуВ закладки(ok) on 02-Мрт-05, 10:11  (MSK)
>Понимаю =) Проще вот уже 4-й день париться =)
Это карма автора треда. :)
Я потратил минуту на его скрипт и минут 15 на посты:)


  Рекомендовать в FAQ | Cообщить модератору | Наверх

20. "Отправлять почту с аттачем"
Сообщение от alexeylomov Искать по авторуВ закладки(ok) on 02-Мрт-05, 16:01  (MSK)
>Всегда поражали люди игнорирующие CPAN и изобретающие велосипед =)
Если б я мог, то так бы и поступил.
>>У каждого свой выбор :) Если человеку хочется, то почему бы и
>>нет...
>>А так смотрите:
>>Идем на CPAN берем MIME-tools, смотрим - оно хочет IO-stringy, MailTools, TimeDate,
>>Unicode-Map и Unicode-String; Эти модули потянут еще минимум 10 модулей.
>>Не много ли для отправки одного простенького письмеца?
И не только:)  Потом ещё придётся ставить все эти модули на каждую машину, с которой хочу запустить этот скрипт.
Короче, велосипед - это единственный выход.
>Понимаю =) Проще вот уже 4-й день париться =)
Не то, чтобы проще, но учиться никогда не поздно :)
>Это карма автора треда. :)
>Я потратил минуту на его скрипт и минут 15 на посты:)
Это антикарма, я бы сказал... Ну что делать, бывает у меня такое :)
  Рекомендовать в FAQ | Cообщить модератору | Наверх

21. "Отправлять почту с аттачем"
Сообщение от Nimdar Искать по авторуВ закладки(ok) on 02-Мрт-05, 18:32  (MSK)
А на хрена MIME::Tools?
Ставишь MIME::Lite.
man MIME::Lite
  Рекомендовать в FAQ | Cообщить модератору | Наверх

22. "Отправлять почту с аттачем"
Сообщение от alexeylomov Искать по авторуВ закладки(ok) on 02-Мрт-05, 19:04  (MSK)
Ни на хрена, а не подходит он мне. Мне вообще ничто не подходит, так как конфигурация той машины, с которой должна отправляться почта может быть любой!!!
  Рекомендовать в FAQ | Cообщить модератору | Наверх

23. "Отправлять почту с аттачем"
Сообщение от Nimdar Искать по авторуВ закладки(ok) on 02-Мрт-05, 19:10  (MSK)
>Ни на хрена, а не подходит он мне. Мне вообще ничто не
>подходит, так как конфигурация той машины, с которой должна отправляться почта
>может быть любой!!!

Ню-ню. Тогда желаю удачи в изобретении велосипеда с квадратными колесами.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

24. "Отправлять почту с аттачем"
Сообщение от alexeylomov Искать по авторуВ закладки(ok) on 02-Мрт-05, 19:31  (MSK)
>Ню-ню. Тогда желаю удачи в изобретении велосипеда с квадратными колесами.

Так я уже изобрёл, и колёса нормальные, круглые... Спасибо за беспокойство :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

25. "Отправлять почту с аттачем"
Сообщение от EHoT emailИскать по авторуВ закладки(ok) on 03-Мрт-05, 08:45  (MSK)
а так не проще?

/usr/local/bin/mpack -s Subject-of-mail -d /home/text-of-mail-body /mnt/share/ttn/file-to-send user-to-send\@domain.ru`;

  Рекомендовать в FAQ | Cообщить модератору | Наверх

26. "Отправлять почту с аттачем"
Сообщение от Azazelo Искать по авторуВ закладки(??) on 03-Мрт-05, 08:54  (MSK)
>Здравствуйте. Мне нужно скриптом на Перл отправлять почту с аттачем и текстом.
>
>С текстом у меня всё получается, а вот с аттачем никак не
>могу разобраться.
>Киньте, пожалуйста, ссылочку, где можно подробно про это почитать, или объясните как
>аттач работает.
>Поиском много примеров находил, но там везде аттач без текста, а сделать
>также, но с текстом у меня не получается.
кажется подойдет .
http://linuxportal.ru/print.php/86_0_3_0_M/

  Рекомендовать в FAQ | Cообщить модератору | Наверх

27. "Отправлять почту с аттачем"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 03-Мрт-05, 09:46  (MSK)
У нас работает такой скрипт, привожу вырезку
#!/usr/bin/perl -w
##

use strict;
use Mail::Sender;
#use Fcntl;

.....

$sender = new Mail::Sender
  {smtp => 'mail.strs.ru', from => 'b@s.ru'};
$sender->MailFile({to => 'bu@s.ru',
  subject => "La la la",
  msg => "La la la.",
  file => "/usr/stat/.stcsv"});

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру