Server IP : 85.214.239.14 / Your IP : 18.118.166.47 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /usr/share/doc/libmime-tools-perl/examples/ |
Upload File : |
#!/usr/bin/perl -w =head1 NAME mimesend - send files via MIME mail, from the command line =head1 USAGE Pretty basic: mimesend [-n] [-t to] [-s subj] (-f file [-m type])+ -n Don't actually send it; just print it to stdout. -t to The "to" address. -s subj The subject of the message. -f file Path to attached file, or - for STDIN. -m type MIME type of previous -f; therefore -m must follow -f. For example: mimesend -t you@yourhost.com -s "Hello, nurse!" -f greetings.htm -f foo.gif =head1 AUTHOR Eryq, eryq@zeegee.com 8 Jan 1997 =cut use lib "./lib"; use MIME::Entity; # Lookup table: my %TypeFor = qw( txt text/plain sh text/x-sh csh text/x-csh pm text/x-perl pl text/x-perl jpg image/jpeg jpeg image/jpeg gif image/gif tif image/tiff tiff image/tiff xbm image/xbm pdf application/pdf ); # Usage: @ARGV or die <<EOF; Usage: mimesend [-t to] [-s subj] (-f file [-m type])+ -n Don't actually send it; just print it to stdout. -t to The "to" address. -s subj The subject of the message. -f file Path to attached file. -m type MIME type of most recent attached file. EOF # Type: sub type_for { my $path = shift; my ($ext) = ($path =~ /\.([a-z0-9]+)\Z/i); ($ext and $TypeFor{lc($ext)}) or (-T $path ? 'text/plain' : 'application/octet-stream'); } # Get args: my $nosend; my @files; ARG: while (@ARGV) { $_ = shift @ARGV; /^-n/ and do { $nosend = 1; next ARG; }; /^-t(.*)/ and do { $to = $1 || shift @ARGV; next ARG; }; /^-s(.*)/ and do { $subj = $1 || shift @ARGV; next ARG; }; /^-f(.*)/ and do { push @files, [$1||shift @ARGV]; next ARG; }; /^-m(.*)/ and do { $files[-1][1] = $1 || shift @ARGV; next ARG; }; die "$0: bad usage: <$_>.\n"; } # Verify destination: $to or die "$0: missing [-t to]\n"; # Verify subject: $subj or die "$0: missing [-s subject]\n"; # Start with top-level entity: my $top; if (!@files) { die "$0: no files specified!\n"; } elsif (@files == 1) { my ($path, $type) = @{$files[0]}; # Build: $top = build MIME::Entity Type => ($type || type_for($path)), $path eq '-' ? (Data => [<>]) : (Path => $path), Encoding => '-SUGGEST'; $top->head->add('To', $to); $top->head->add('Subject', $subj); } else { # Start with top: $top = build MIME::Entity Type=>"multipart/mixed"; $top->head->add('To', $to); $top->head->add('Subject', $subj); # Attach files: foreach (@files) { my ($path, $type) = @{$_}; $top->attach(Type => ($type || type_for($path)), Path => $path, Encoding => '-SUGGEST'); } } # Launch mailer and send message? if (!$nosend) { open SENDMAIL, "|/usr/lib/sendmail -t -oi -oem" or die "$0: open sendmail: $!\n"; $top->print(\*SENDMAIL); close SENDMAIL; die "sendmail failed" if ($? >> 255); } else { $top->print(\*STDOUT); } 1;