| Email-Sender documentation | Contained in the Email-Sender distribution. |
Email::Sender::Transport::SMTP::Persistent - an SMTP client that stays online
version 0.110001
The stock Email::Sender::Transport::SMTP reconnects each time it sends a message. This transport only reconnects when the existing connection fails.
$transport->disconnect;
This method sends an SMTP QUIT command and destroys the SMTP client, if on exists and is connected.
Ricardo Signes <rjbs@cpan.org>
This software is copyright (c) 2011 by Ricardo Signes.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
| Email-Sender documentation | Contained in the Email-Sender distribution. |
package Email::Sender::Transport::SMTP::Persistent; BEGIN { $Email::Sender::Transport::SMTP::Persistent::VERSION = '0.110001'; } use Moose; extends 'Email::Sender::Transport::SMTP'; # ABSTRACT: an SMTP client that stays online use Net::SMTP; has _cached_client => ( is => 'rw', ); sub _smtp_client { my ($self) = @_; if (my $client = $self->_cached_client) { return $client if eval { $client->reset; $client->ok; }; my $error = $@ || 'error resetting cached SMTP connection: ' . $client->message; Carp::carp($error); } my $client = $self->SUPER::_smtp_client; $self->_cached_client($client); return $client; } sub _message_complete { } sub disconnect { my ($self) = @_; return unless $self->_cached_client; $self->_cached_client->quit; $self->_cached_client(undef); } __PACKAGE__->meta->make_immutable; no Moose; 1; __END__