Programavimas      turinys


Kaip išsiųsti laišką iš Perl skripto?

Žemiau yra pavyzdys:

#!/usr/bin/perl -Tw
use Mail::Mailer;
# http://www.zeegee.com/code/perl/MIME-tools/download/
use MIME::Words qw(:all);
use strict;

my $charset='UTF-8';
# default /usr/bin/mail mailer strips mime headers, use 'sendmail' or 'smtp'
my $mailer = Mail::Mailer->new('sendmail');
# my $mailer = new Mail::Mailer 'smtp', Server => $server;
my $body = qq{
ąčęėįšųūž
фифи
日本語
};
$mailer->open({
	From    => encode_mimewords('Ričardas <rch@localhost>', Charset => $charset),
	To      => encode_mimewords('Ričardas <rch@localhost>', Charset => $charset),
	Subject => encode_mimewords('perl test ąčęėįšųūž', Charset => $charset),
	'MIME-Version' => '1.0',
	'Content-Type' => "text/plain; charset=$charset",
	'Content-Transfer-Encoding' => '8bit',
       })
or die "Can't open: $!\n";
print $mailer $body;
$mailer->close();

Bendru atveju encode_mimewords() yra būtina, nes daugelis pašto programų sudarko tiesiog 8bitų baitus laiškų antraštėse. Jei neturite įdiegę MIME::Words modulio, pasakykite administratoriui, kad tą padarytų, arba surinkite šias komandas:

/root 2$ su
Password:
~ #su3# perl -MCPAN  -e shell

cpan shell -- CPAN exploration and modules installation (v1.48)
ReadLine support enabled

cpan> install MIME::Words
	...
cpan> quit
Lockfile removed.
~ #su3# 

Kitas naudingas Perl'o modulis yra Text::Iconv, suteikiantis galimybę naudoti libc iconv(), skirtą konvertavimui tarp įvarių koduočių. Jį geriausia naudoti su GNU libiconv arba glibc v2.1.95 ar naujesne.




Kaip išsiųsti laišką iš shell skripto?

Unix /bin/sh skriptuose dažnai naudojama sena mail komanda laiškui išsiųsti. Deja, ji nepalaiko MIME, tačiau ją galima pakeisti mutt komanda:

cat /tmp/laisko_tekstas.txt |mutt -s 'Laiško tema' -n -F/dev/null -e 'set charset=UTF-8 from="Siuntėjas <foo@bar.com>"' rch@localhost

Norėdami prisegti kokią nors bylą, pridėkite papildomą -a ./bylos_vardas mutt'o raktą.



  Valid XHTML 1.0!