SL::Mailer: Inhalt von Attachments direkt übergeben können
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 24 Sep 2015 12:42:12 +0000 (14:42 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 24 Sep 2015 12:43:41 +0000 (14:43 +0200)
Bisher wurde ein Attachmentinhalt immer aus einer Datei gelesen. Liegt der
Inhalt schon in einer Variable vor, so kann diese nun im Attachment-Hash
als Key »content« übergeben werden. Der Dateiname (Key »filename«) wird
dann ignoriert.

SL/Mailer.pm

index 67f5fdd..dc6002b 100644 (file)
@@ -121,26 +121,25 @@ sub _create_address_headers {
 sub _create_attachment_part {
   my ($self, $attachment) = @_;
 
-  my $source_file_name;
-
   my %attributes = (
     disposition  => 'attachment',
     encoding     => 'base64',
   );
 
+  my $attachment_content;
+
   if (ref($attachment) eq "HASH") {
     $attributes{filename} = $attachment->{name};
-    $source_file_name     = $attachment->{filename};
+    $attachment_content   = $attachment->{content} // eval { read_file($attachment->{filename}) };
 
   } else {
     # strip path
     $attributes{filename} =  $attachment;
     $attributes{filename} =~ s:.*\Q$self->{fileid}\E:: if $self->{fileid};
     $attributes{filename} =~ s:.*/::g;
-    $source_file_name     =  $attachment;
+    $attachment_content   =  eval { read_file($attachment) };
   }
 
-  my $attachment_content = eval { read_file($source_file_name) };
   return undef if !defined $attachment_content;
 
   my $application             = ($attachment =~ /(^\w+$)|\.(html|text|txt|sql)$/) ? 'text' : 'application';