X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FMailer.pm;h=76eac68e344d981db97c0d56de816445e9f50acd;hb=5dd059ffbe9317acf466ad70610513ded8ad1c6f;hp=f680cc2fa1c691b5748f7d4512c5dddbfb9786a7;hpb=4dbb09950c9f5596646537c12d991c99086fe7c1;p=kivitendo-erp.git diff --git a/SL/Mailer.pm b/SL/Mailer.pm index f680cc2fa..76eac68e3 100644 --- a/SL/Mailer.pm +++ b/SL/Mailer.pm @@ -12,7 +12,7 @@ # Email: dsimader@sql-ledger.org # Web: http://www.sql-ledger.org # -# Contributors: +# Contributors: # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -41,7 +41,6 @@ sub new { bless $self, $type; } - sub send { $main::lxdebug->enter_sub(); @@ -52,9 +51,9 @@ sub send { my $domain = $self->{from}; $domain =~ s/(.*?\@|>)//g; my $msgid = "$boundary\@$domain"; - + $self->{charset} = "ISO-8859-1" unless $self->{charset}; - + if ($out) { if (!open(OUT, $out)) { $main::lxdebug->leave_sub(); @@ -68,9 +67,9 @@ sub send { } $self->{contenttype} = "text/plain" unless $self->{contenttype}; - + my ($cc, $bcc); - $cc = "Cc: $self->{cc}\n" if $self->{cc}; + $cc = "Cc: $self->{cc}\n" if $self->{cc}; $bcc = "Bcc: $self->{bcc}\n" if $self->{bcc}; foreach my $item (qw(to cc bcc)) { @@ -88,7 +87,6 @@ X-Mailer: SQL-Ledger $self->{version} MIME-Version: 1.0 |; - if ($self->{attachments}) { print OUT qq|Content-Type: multipart/mixed; boundary="$boundary" @@ -103,33 +101,38 @@ $self->{message} } foreach my $attachment (@{ $self->{attachments} }) { - - my $application = ($attachment =~ /(^\w+$)|\.(html|text|txt|sql)$/) ? "text" : "application"; - + + my $application = + ($attachment =~ /(^\w+$)|\.(html|text|txt|sql)$/) + ? "text" + : "application"; + open(IN, $attachment); if ($?) { - close(OUT); - $main::lxdebug->leave_sub(); - return "$attachment : $!"; + close(OUT); + $main::lxdebug->leave_sub(); + return "$attachment : $!"; } - + my $filename = $attachment; + # strip path $filename =~ s/(.*\/|$self->{fileid})//g; - + print OUT qq|--${boundary} Content-Type: $application/$self->{format}; name="$filename"; charset="$self->{charset}" Content-Transfer-Encoding: BASE64 Content-Disposition: attachment; filename="$filename"\n\n|; my $msg = ""; - while () {; + while () { + ; $msg .= $_; } print OUT &encode_base64($msg); close(IN); - + } print OUT qq|--${boundary}--\n|; @@ -147,25 +150,24 @@ $self->{message} return ""; } - sub encode_base64 ($;$) { $main::lxdebug->enter_sub(); - # this code is from the MIME-Base64-2.12 package # Copyright 1995-1999,2001 Gisle Aas my $res = ""; my $eol = $_[1]; $eol = "\n" unless defined $eol; - pos($_[0]) = 0; # ensure start at the beginning + pos($_[0]) = 0; # ensure start at the beginning - $res = join '', map( pack('u',$_)=~ /^.(\S*)/, ($_[0]=~/(.{1,45})/gs)); + $res = join '', map(pack('u', $_) =~ /^.(\S*)/, ($_[0] =~ /(.{1,45})/gs)); - $res =~ tr|` -_|AA-Za-z0-9+/|; # `# help emacs - # fix padding at the end + $res =~ tr|` -_|AA-Za-z0-9+/|; # `# help emacs + # fix padding at the end my $padding = (3 - length($_[0]) % 3) % 3; $res =~ s/.{$padding}$/'=' x $padding/e if $padding; + # break encoded string into lines of no more than 60 characters each if (length $eol) { $res =~ s/(.{1,60})/$1$eol/g; @@ -176,6 +178,5 @@ sub encode_base64 ($;$) { return $res; } - 1;