%PDF- %PDF-
Direktori : /proc/227033/root/usr/share/perl5/vendor_perl/Email/Send/ |
Current File : //proc/227033/root/usr/share/perl5/vendor_perl/Email/Send/Sendmail.pm |
package Email::Send::Sendmail; use strict; use File::Spec (); BEGIN { local $Return::Value::NO_CLUCK = 1; require Return::Value; Return::Value->import; } use Symbol qw(gensym); use vars qw[$SENDMAIL $VERSION]; $VERSION = '2.199'; sub is_available { my $class = shift; # This is RIDICULOUS. Why do we say it's available if it isn't? # -- rjbs, 2006-07-06 return success "No Sendmail found" unless $class->_find_sendmail; return success ''; } sub _find_sendmail { my $class = shift; return $SENDMAIL if defined $SENDMAIL; my $sendmail; for my $dir ( File::Spec->path, ($ENV{PERL_EMAIL_SEND_SENDMAIL_NO_EXTRA_PATHS} ? () : ( File::Spec->catfile('', qw(usr sbin)), File::Spec->catfile('', qw(usr lib)), )) ) { if ( -x "$dir/sendmail" ) { $sendmail = "$dir/sendmail"; last; } } return $sendmail; } sub send { my ($class, $message, @args) = @_; my $mailer = $class->_find_sendmail; return failure "Couldn't find 'sendmail' executable in your PATH" ." and \$".__PACKAGE__."::SENDMAIL is not set" unless $mailer; return failure "Found $mailer but cannot execute it" unless -x $mailer; local $SIG{'CHLD'} = 'DEFAULT'; my $pipe = gensym; open $pipe, "| $mailer -t -oi @args" or return failure "Error executing $mailer: $!"; print $pipe $message->as_string or return failure "Error printing via pipe to $mailer: $!"; close $pipe or return failure "error when closing pipe to $mailer: $!"; return success; } 1; __END__ =head1 NAME Email::Send::Sendmail - Send Messages using sendmail =head1 SYNOPSIS use Email::Send; Email::Send->new({mailer => 'Sendmail'})->send($message); =head1 DESCRIPTION This mailer for C<Email::Send> uses C<sendmail> to send a message. It I<does not> try hard to find the executable. It just calls C<sendmail> and expects it to be in your path. If that's not the case, or you want to explicitly define the location of your executable, alter the C<$Email::Send::Sendmail::SENDMAIL> package variable. $Email::Send::Sendmail::SENDMAIL = '/usr/sbin/sendmail'; =head1 SEE ALSO L<Email::Send>, L<perl>. =head1 AUTHOR Current maintainer: Ricardo SIGNES, <F<rjbs@cpan.org>>. Original author: Casey West, <F<casey@geeknest.com>>. =head1 COPYRIGHT Copyright (c) 2004 Casey West. All rights reserved. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut