Автор Тема: Нуждаюсь в Вашей помощи  (Прочитано 2890 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн shaman

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 2
  • +0/-0
  • 0
    • Просмотр профиля
Нуждаюсь в Вашей помощи
« : 18 Марта 2001, 03:56:38 »
Помогите пожалуйста, никак не получается отослать письмо с вложеной картинкой, для этого я использую модуль MIME::Lite, вайл, максимум что получается, так это отслать файл размером 0 байт.
Вот код:
----------------------------------------------
#!/usr/bin/perl -w

########################################
# **************************************
#         VARIABLES
# **************************************
 my($path);
 $path="../cgi-bin";    
########################################

use strict;                                  
use CGI::Carp qw (fatalsToBrowser);
use CGI qw/:standard/;
require "$path/Lite.pm";
$CGI::POST_MAX=131072;
###################
       
       
my($subject,$from,$to,$upfile1,$message);
           if (param())
           {
           $subject=param(\'subject\');
           $subject=~s/           $from=param(\'from\');
           $from=~s/@/\\@/g;
           $upfile1=param(\'upfile1\');
           $upfile1=~s/\\\\/\\//g;
           $message=param(\'message\');
           $message=~s/           $to=param(\'to\');
           $to=~s/@/\\@/g;
           }
           
                       
 
 if ($subject eq "" || $subject eq " " || $from eq "" || $from eq " " || $to eq "" || $to eq "")
 {
    print "Content-type: text/html

";
     print "You didn\'t fill from, to, or subject
";
 }
 else
 {
 ######### SEND MESSAGE BEGIN ###################
    # $upfile1=$ARGV[0] || die "missing path to GIF";
   
    my $msg = MIME::Lite->new(From => "$from",
         To =>"$to",
          Subject =>"$subject",
             Type =>\'Text\',
                           Data =>"$message");
      

   unless ($upfile1 eq "")
    {
      
          $path=$upfile1;
     $msg->attach(
       Encoding =>\'base64\',
          Path =>$path,
           Type =>\'image/gif\',
           Filename => \'logo.gif\'
                );
     }      
                     
       MIME::Lite->send(\'sendmail\', \'/usr/sbin/sendmail -t -oi\');
    $msg->send;
 
 ########### SEND MESSAGE END ####################
    print "Content-type: text/html

";
   print "The message was sent
";

  }
----------------------------------------------------------

Большое спасибо

Оффлайн Light Elf

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 66
  • +0/-0
  • 0
    • Просмотр профиля
Нуждаюсь в Вашей помощи
« Ответ #1 : 18 Марта 2001, 20:38:47 »
А получается принимаемы файл сохранить на диске?
Получается вообще отправить письмо с текстом без вложения?
С уважением,
Light Elf

Оффлайн shaman

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 2
  • +0/-0
  • 0
    • Просмотр профиля
Нуждаюсь в Вашей помощи
« Ответ #2 : 18 Марта 2001, 22:14:43 »
Цитировать
Light Elf (18-03-2001 20:38):
А получается принимаемы файл сохранить на диске?
Получается вообще отправить письмо с текстом без вложения?

И сохранять получается, и письмо без вложения отправляется???
Может кто другим путем это делает, так подскажите.

Сенкс

  • Гость
Нуждаюсь в Вашей помощи
« Ответ #3 : 19 Марта 2001, 10:32:27 »
Цитировать
shaman (18-03-2001 22:14):
Цитировать
Light Elf (18-03-2001 20:38):
А получается принимаемы файл сохранить на диске?
Получается вообще отправить письмо с текстом без вложения?

И сохранять получается, и письмо без вложения отправляется???
Может кто другим путем это делает, так подскажите.

Сенкс


Я делаю так:

use CGI;
use MIME::Base64 qw(encode_base64);

$cgi = new CGI;

# attachment: file body
if ( defined $cgi->param(\'file\') && $cgi->param(\'file\') ne \'\') {
    # flag
    $attachment = 1;

    # get and decode file content
    $attFName = $cgi->param(\'file\');
    $tmpFName = $cgi->tmpFileName($attFName);
    ($shortFName) = ($attFName =~ /.*[\\/\\\\](.*?)$/);
    unless ( open FILE, "<$tmpFName") {
        $attBody = \'cannot open and decode file\';
    } else {
        binmode FILE;
        $attBody = \'\';
        while (read(FILE, $buf, 60*57)) {
                $attBody .= encode_base64($buf);
        }
        close FILE;
    }
}

# Mail the message
unless ( open ( TMP, "| /usr/sbin/sendmail -f \\"$from\\" -oi $to" ) ) {
    print "Content-type: text/html

";
    print "Error: Cannont send e-mail!"
    exit 0 ;
}

# print common header of the message
print TMP "From: $from
";
print TMP "To: $to
";
print TMP "Subject:  $subject
";

# print headers for attachment (if exists)
if ($attachment) {
    print TMP "MIME-Version: 1.0
";
    print TMP "Content-Type: multipart/mixed; boundary=\\"nextpart\\"
";
    print TMP "
";
    print TMP "--nextpart
";
}

# print end of header
print TMP "
";

# print message body
print TMP $message;

# print attachment
if ($attachment) {
        print TMP "--nextpart
";
        print TMP "Content-Type: application/octet-stream; name=\\"$shortFName\\"
";
        print TMP "Content-Transfer-Encoding: base64
";
        print TMP "Content-Disposition: attachment; filename=\\"$shortFName\\"
";
        print TMP "
";
        print TMP $attBody;
        print TMP "--nextpart--
";
}

close TMP ;

print "Content-type: text/html

";
print "The message was sent
";

 

Sitemap 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