| Email-Send documentation | Contained in the Email-Send distribution. |
Email::Send::Sendmail - Send Messages using sendmail
use Email::Send;
Email::Send->new({mailer => 'Sendmail'})->send($message);
This mailer for Email::Send uses sendmail to send a message. It
does not try hard to find the executable. It just calls
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 $Email::Send::Sendmail::SENDMAIL package variable.
$Email::Send::Sendmail::SENDMAIL = '/usr/sbin/sendmail';
Email::Send, perl.
Current maintainer: Ricardo SIGNES, <rjbs@cpan.org>.
Original author: Casey West, <casey@geeknest.com>.
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.
| Email-Send documentation | Contained in the Email-Send distribution. |
package Email::Send::Sendmail; use strict; use File::Spec (); use Return::Value; use Symbol qw(gensym); use vars qw[$SENDMAIL $VERSION]; $VERSION = '2.198'; 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__