X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FMailer.pm;h=17981331d04fbafcac59705f3ecd5069b03a852e;hb=0a382648a783af65ddf69cc02124379bf0c24844;hp=5e280128bdf90d2d5554d7d7c51f8ce434bc5129;hpb=49c7621e7bd48352be257e6ceea0e6fbb1718516;p=kivitendo-erp.git diff --git a/SL/Mailer.pm b/SL/Mailer.pm index 5e280128b..17981331d 100644 --- a/SL/Mailer.pm +++ b/SL/Mailer.pm @@ -31,11 +31,14 @@ package Mailer; use Email::Address; +use Encode; use SL::Common; use SL::MIME; use SL::Template; +use strict; + my $num_sent = 0; sub new { @@ -101,18 +104,18 @@ sub send { $num_sent++; my $boundary = time() . "-$$-${num_sent}"; $boundary = "LxOffice-$self->{version}-$boundary"; - my $domain = $self->{from}; + my $domain = $self->recode($self->{from}); $domain =~ s/(.*?\@|>)//g; my $msgid = "$boundary\@$domain"; my $form = $main::form; my $myconfig = \%main::myconfig; - my $email = $myconfig->{email}; + my $email = $self->recode($myconfig->{email}); $email =~ s/[^\w\.\-\+=@]//ig; my %temp_form = ( %{ $form }, 'myconfig_email' => $email ); - my $template = PlainTextTemplate->new(undef, \%temp_form, $myconfig); + my $template = SL::Template::create(type => 'PlainText', form => \%temp_form); my $sendmail = $template->parse_block($main::sendmail); if (!open(OUT, $sendmail)) { @@ -125,12 +128,15 @@ sub send { foreach my $item (qw(to cc bcc)) { next unless ($self->{$item}); + $self->{$item} = $self->recode($self->{$item}); $self->{$item} =~ s/\</{$item} =~ s/\$<\$/{$item} =~ s/\>/>/g; $self->{$item} =~ s/\$>\$/>/g; } + $self->{from} = $self->recode($self->{from}); + my $headers = ''; foreach my $item (qw(from to cc bcc)) { next unless ($self->{$item}); @@ -149,7 +155,7 @@ sub send { } } - $headers .= sprintf("Subject: %s\n", $self->mime_quote_text($self->{subject}, 60)); + $headers .= sprintf("Subject: %s\n", $self->mime_quote_text($self->recode($self->{subject}), 60)); print OUT qq|${headers}Message-ID: <$msgid> X-Mailer: Lx-Office $self->{version} @@ -164,7 +170,7 @@ MIME-Version: 1.0 print OUT qq|--${boundary} Content-Type: $self->{contenttype}; charset="$self->{charset}" -$self->{message} +| . $self->recode($self->{message}) . qq| |; } @@ -184,7 +190,7 @@ $self->{message} my $application = ($attachment =~ /(^\w+$)|\.(html|text|txt|sql)$/) ? "text" : "application"; my $content_type = SL::MIME->mime_type_from_ext($filename); - $content_type = "${application}/${self->{format}}" if (!$content_type && $self->{format}); + $content_type = "${application}/$self->{format}" if (!$content_type && $self->{format}); $content_type ||= 'application/octet-stream'; open(IN, $attachment); @@ -221,7 +227,7 @@ Content-Disposition: attachment; filename="$filename"\n\n|; } else { print OUT qq|Content-Type: $self->{contenttype}; charset="$self->{charset}" -$self->{message} +| . $self->recode($self->{message}) . qq| |; } @@ -260,5 +266,12 @@ sub encode_base64 ($;$) { return $res; } +sub recode { + my $self = shift; + my $text = shift; + + return $::locale->is_utf8 ? Encode::encode('utf-8-strict', $text) : $text; +} + 1;