| Код | use MIME::QuotedPrint; use MIME::Base64; use Mail::Sendmail;
$message = qq[<html><body><h1>Вот то, что просила</h1><img src="pbar.gif><img src="erorr.gif></body></html>]; $message = encoder($message,"win","koi"), $boundary = "====" . time() . "====";
%mail = ( To => 'artur@mail.rin.ru', From => '"Bill Gates" <Bill.Gates@microsoft.org>', Subject => 'Subj', 'Content-Type' => "multipart/mixed; boundary=\"$boundary\" charset=koi8-r", 'Content-Transfer-Encoding' => '8bit', 'X-Mailer' => 'Microsoft Outlook Express 6.00.2600.0000', smtp => '192.168.1.80:25', 'X-MSMail-Priority' => 'High');
$file = 'send.pl'; #Здесь пишешь название файла, которы отправляешь. open (F, $file) or die "Cannot read $file: $!"; binmode F; undef $/; $mail{body} = encode_base64(<F>); close F;
$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"
$mail{body} $boundary--\n END_OF_BODY
sendmail(%mail) or die $Mail::Sendmail::error;
print "OK. Log says:\n", $Mail::Sendmail::log;
sub encoder { my $enstring=shift; my $cfrom=shift; my $cto=shift; my %codefunk=( #win=>"\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF", #koi=>"\xE1\xE2\xF7\xE7\xE4\xE5\xF6\xFA\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF2\xF3\xF4\xF5\xE6\xE8\xE3\xFE\xFB\xFD\xFF\xF9\xF8\xFC\xE0\xF1\xC1\xC2\xD7\xC7\xC4\xC5\xD6\xDA\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD2\xD3\xD4\xD5\xC6\xC8\xC3\xDE\xDB\xDD\xDF\xD9\xD8\xDC\xC0\xD1", #iso=>"\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF", #dos=>"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF", win=>"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяёЁ", koi=>"бвчздецъйклмнопртуфхжигюыэящшьасБВЧЗДЕЦЪЙКЛМНОПРТУФХЖИГЮЫЭЯЩШЬАСЈі", iso=>"°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопсЎ", dos=>"Ђ?‚ѓ„…†‡?‰Љ‹Њ?Ћ??‘’“”•–—˜™љ›њ?ћџ ЎўЈ¤Ґ¦§Ё©Є«¬®Їабвгдежзийклмнопср", koi_lc=>"tr/\xB3\xE0-\xFF/\xA3\xC0-\xDF/", koi_uc=>"tr/\xA3\xC0-\xDF/\xB3\xE0-\xFF/", win_lc=>"tr/\xA8\xC0-\xDF/\xB8\xE0-\xFF/", win_uc=>"tr/\xB8\xE0-\xFF/\xA8\xC0-\xDF/", alt_lc=>"tr/\xF0\x80-\x9F/\xF1\xA0-\xAF\xE0-\xEF/", alt_uc=>"tr/\xF1\xA0-\xAF\xE0-\xEF/\xF0\x80-\x9F/", iso_lc=>"tr/\xA1\xB0-\xCF/\xF1\xD0-\xEF/", iso_uc=>"tr/\xF1\xD0-\xEF/\xA1\xB0-\xCF/", dos_lc=>"tr/\x80-\x9F/\xA0-\xAF\xE0-\xEF/", dos_uc=>"tr/\xA0-\xAF\xE0-\xEF/\x80-\x9F/", mac_lc=>"tr/\xDD\x80-\xDF/\xDE\xE0-\xFE\xDF/", mac_uc=>"tr/\xDE\xE0-\xFE\xDF/\xDD\x80-\xDF/" );
if (!$enstring or !$cfrom or !$cto) {return 0} else { if ($cfrom ne "" and $cto ne "lc" and $cto ne "uc") { $_=$enstring;$cfrom=$codefunk{$cfrom};$cto=$codefunk{$cto}; eval "tr/$cfrom/$cto/"; return $_; } elsif (($cfrom ne "") and ($cto eq "lc" or $cto eq "uc")) { $_=$enstring; $cfrom=$codefunk{"$cfrom\_$cto"}; eval $cfrom; return $_; } } return $enstring; }
| Данный скрипт отправляет файл с помощью модуля Mail, но принцип формирования послания одинаковый. |