Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Вечный вопрос про почту


Автор: Throne 11.7.2006, 19:54
Огромная просьба не писать что надо было юзать поиск и что про это милион раз говорили.
Пожалуйста напишите как перлом сформировать письмо и отправить на электронную почту.
И скажите можно ли как-то заставить его отправить целеком страницу на которой сейчас юзер при условии, что она сформирована динамически?
если кто помнит где это обсуждалось или у кого-то удачнее с поиском, чем у меня киньте ссылку пожалуйста.
Заранее спаибо. 

Автор: shootnix 11.7.2006, 21:34
Код

open MAIL, "|/usr/sbin/sendmail -oi -t";
print MAIL "From: shootnix\@forever.kz\n";
print MAIL "To: shootnix\@mail.ru\n";
print MAIL "Subject: simple test\n\n";
print MAIL "This is a simple test.";
close MAIL;


Так отправлять письмо. А страницу... ну это ж, наверно, так же как и просто текст? Надо только знать, что за страницу высылать и не проблема же её потом снова сформировать при отправке. Там, по айди или ещё по какой куке идентифицировать... 

Автор: arto 11.7.2006, 21:35
perldoc MIME::Lite::HTML 

Автор: Celdox 11.7.2006, 22:36
Ну, я так делаю.

Код

      my $msg = MIME::Lite->new(
                         From    => <вставь от кого>,
                         To      =>  <вставь от кому>,
                         Subject => <вставь тему>,
                         Type    => 'multipart/mixed'
                      );  
  
      ### Add parts (each "attach" has the same arguments as "new"):
      $msg->attach(
                   Type     => 'text/html',
                         
                   Data     => <вставь текст>
                      );
  
      $msg->attach(
                         Type     => 'text/xml',
                         Filename => <вставь имя файла>,
                         Disposition => 'attachment',
                         Data     => <вставь текстовые данные>
                      ); 
  

         MIME::Lite->send('smtp', "".<вставь smtp_host - т.е. сервер свой>, Timeout=>60);

         $msg->send;         
           
           
         print "\n=== Sent \n\n";  



Вот. (Если у гурцов есть пожелания, сам несомненно прислушаюсь!)

Да и вообще, вот тут http://www.getinfo.ru/article529.html это вроде тоже есть.
  

Автор: Throne 23.7.2006, 15:44
Послал вот так:
Код

#!/usr/bin/perl
print "Content-Type: text/html\n\n";
use MIME::Lite;

my $msg = MIME::Lite->new( From    => '[email protected]',
                           To      => '[email protected]',
                           Subject => 'Тема письма',
                           Type    => 'text/plain; charset=windows-1251',
                           Data    => 'текст письма' );

$msg->send();
И чёто не заработало  

Автор: Throne 30.7.2006, 23:28
shootnix ,
Скажи как изменить (если надо) text/plain на text/html smile  

Автор: nitr 31.7.2006, 01:06
=) измени Type как тебе надо, а в Data  пиши текст письма в виде хтмл =)  

Автор: Throne 2.8.2006, 08:32
Цитата(nitr @ 31.7.2006,  01:06)
=) измени Type как тебе надо, а в Data  пиши текст письма в виде хтмл =)

Я имел ввиду в примере shootnix'a; как я понял, надо просто добавить строчку:
Код

print MAIL "Type: text/html"

А скажи как аттачи вставлять в сендмаиле.
ЗЫ MIME::Lite у меня так нормально и не заработал, выдает ашибку об авторизации, а как её пройти я ненаю.

Автор: Celdox 2.8.2006, 12:45
Если ошибка авторизации на отсыл писем, то стоит попробовать поставить на почтовом серваке
Open relay
чтобы не мучиться. Но, это только для начала, потом стоит разобраться.

Автор: Throne 2.8.2006, 15:11
Повторюсь:
как я понял, при работе с sendmail'ом, надо просто добавить строчку:
Код

print MAIL "Type: text/html"
Это так? мне больше ничего не надо smile
--------------------------------------------------------------
Путем проб и ошибок было доказанно, что это не так.
ЛЮДИ! Хотябы ссылку дайте где это написано, если не хотите объеснять. Мне нужно всего-лишь то, как в sendmail'е указать MIME тип.

Автор: comtat 2.8.2006, 19:16
Я делаю так 
Код

#!/usr/bin/perl
use DBI;
use strict;

#Рассылка зверям информационных писем
my $s=DBI->connect ("DBI:mysql:дб:хост", "vano", "vfkbrjdf", {PrintError=>1, RaiseError=>1});
my $s0=$s->prepare (qq{SELECT address FROM Records WHERE address IS NOT NULL AND address!="" ORDER BY user_id, record_id});
$s0->execute();
while (my ($address)=$s0->fetchrow_array())
{
    chomp($address);
    my $inp = open (DOC, "./message.htm");
    if (defined($inp))
    {
        open (SENDMAIL, "|/usr/sbin/sendmail -oi -t");
        print SENDMAIL qq{From:ОАО "Комтат" <calculator\@хост.ru>
To: <$address>
Subject: Информационное письмо
MIME-Version: 1.0
Content-Type: text/html;
     charset="koi8-r"

};
        while (defined(my $line = <DOC>))
        {
            print SENDMAIL $line;
        }
        close (ACT);
        close (SENDMAIL);
    print ("$address\n");
    }
}

$s0->finish();
$s->disconnect();

где message.htm такого вида
Код

<HTML>
<BODY>
<H1>Блаблабла</H1>
<P>Блаблабла-Блаблабла-Блаблабла-Блаблабла-Блаблабла-
<BR>
БлаблаблаБлаблаблаБлаблаблаБлаблабла
</P1>
</BODY>
</HTML

Автор: Throne 2.8.2006, 19:24
Уря!  smile 
Тоесть нужно вставить
Код

print MAIL "Content-Type: text/html\n";
print MAIL "charset: koi8-r\n";
???
--------------------------------------------------------------
Ну вот, тока я обрадовался што наконецто послалось усе в нормальном виде, как сразу обломался, почему-то не получаецца сменить кодировку письма.

Автор: Throne 2.8.2006, 20:16
Да будет восславлен и воспет великий Admin, написавший статью в FAQ, и да светится имя Alex, выложевшего её туда! smile 
Всем прежде чем вопрос задавать читать ФАКЮ!   smile 
Всё было проще репки:
Код

#!/usr/bin/perl
print "Content-Type: text/html\n\n";

open MAIL, "|/usr/sbin/sendmail -oi -t";
print MAIL "From: eny\@forever.kz\n";
print MAIL "To: ilya_makeev\@mail.ru\n";
print MAIL "Subject: simple test\n";
print MAIL "Content-Type: text/html; charset=Windows-1251\n\n";
print MAIL <<MailTextHtml
<html>

<head>
<meta http-equiv="Content-Language" content="ru">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Письмо мать твою</title>
</head>

<body>

<table border="2" style="border-collapse: collapse" width="760" bordercolorlight="#C0C0C0" bordercolordark="#808080" bgcolor="#F0F0F0" id="table1">
    <tr>
        <td><font size="2" color="#000080" face="Verdana"><strong>Вот такая
        [censored 12] табличка</strong></font></td>
    </tr>
</table>
<table border="2" style="border-collapse: collapse" width="760" bordercolorlight="#C0C0C0" bordercolordark="#808080" bgcolor="#F0F0F0" id="table2">
    <tr>
        <td><font size="2" color="#000080" face="Verdana"><strong>УРА РАБОТАЕТ
        МАТЬ ВАШУ!!!!</strong></font></td>
    </tr>
</table>

</body>

</html>
MailTextHtml
;
close MAIL;
print "Письмо отослано\n";

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)