eliminate some false laziness in FS::Misc::send_email vs. msg_template/email.pm send_...
[freeside.git] / FS / FS / upload_target.pm
index f3486d3..af2dcb1 100644 (file)
@@ -153,7 +153,8 @@ sub put {
     local $@;
     my $connection = eval { $self->connect };
     return $@ if $@;
-    $connection->put($localname, $remotename) or return $connection->error;
+    $connection->put($localname, $remotename);
+    return $connection->error || '';
   } elsif ( $self->protocol eq 'email' ) {
 
     my $to = join('@', $self->username, $self->hostname);
@@ -162,7 +163,7 @@ sub put {
     # (maybe use only the raw content, so that we don't have to supply a 
     # customer for substitutions? ewww.)
     my %message = (
-      'from'          => $conf->config('invoice_from'),
+      'from'          => $conf->invoice_from_full(),
       'to'            => $to,
       'subject'       => $self->subject,
       'nobody'        => 1,
@@ -199,13 +200,15 @@ sub connect {
     eval "use Net::SFTP::Foreign;";
     die $@ if $@;
     my %args = (
-      port      => $self->port,
       user      => $self->username,
-      password  => $self->password,
-      more      => ($DEBUG ? '-v' : ''),
       timeout   => 30,
-      autodie   => 1, #we're doing this anyway
+      autodie   => 0, #we're doing this anyway
     );
+    # Net::SFTP::Foreign does not deal well with args that are defined
+    # but empty
+    $args{port} = $self->port if $self->port and $self->port != 22;
+    $args{password} = $self->password if length($self->password) > 0;
+    $args{more} = '-v' if $DEBUG;
     my $sftp = Net::SFTP::Foreign->new($self->hostname, %args);
     $sftp->setcwd($self->path);
     return $sftp;