This reply is to address the change if the modification takes place in MIME::Lite vs. Net::SMTP as my previous post suggests. I think the change in behavior should occur at the
send method rather then the send_by_smtp. This would allow future modifications of send methods to accounted for in the same manner. So here is my proposed revised sub send:
# add new global that the top
my $SenderOpts = '';
sub send {
my $self = shift;
if (ref($self)) { ### instance method:
my ($method, @args);
if (@_) { ### args; use them just t
+his once
$method = 'send_by_' . shift;
@args = @_;
}
else { ### no args; use defaults
$method = "send_by_$Sender";
@args = @{$SenderArgs{$Sender} || []};
}
$self->verify_data if $AUTO_VERIFY; ### prevents missing part
+s!
return $self->$method(@args);
}
else { ### class method:
if (@_) {
my @old = ($Sender, @{$SenderArgs{$Sender}});
$Sender = shift;
if ( ref($_[0]) eq 'HASH') {
$SenderOpts = shift;
}
$SenderArgs{$Sender} = [@_]; ### remaining args
return @old;
}
else {
Carp::croak "class method send must have HOW... arguments\n"
+;
}
}
}
Then below in our send_by_smtp method we add:
if ($SenderOpts) {
$smtp->auth( $SenderOpts->{auth_username}, $SenderOpts->{auth
+_password} );
}
directly after our $smtp object is created.