X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FMailer%2FSMTP.pm;h=8012a04cd0a8391a871ac519bc55d71afdcec7f3;hb=980dc53321ae6c2d3e448b6ca2a0c7d11a65ee8c;hp=831bd72b43a096d1cede01c2904bd492c537a3a3;hpb=6f92326a8f2c1f9205a062d32ed8f1abdaa4b7b5;p=kivitendo-erp.git diff --git a/SL/Mailer/SMTP.pm b/SL/Mailer/SMTP.pm index 831bd72b4..8012a04cd 100644 --- a/SL/Mailer/SMTP.pm +++ b/SL/Mailer/SMTP.pm @@ -9,33 +9,31 @@ use Rose::Object::MakeMethods::Generic scalar => [ qw(myconfig mailer form) ] ); +my %security_config = ( + none => { require_module => 'Net::SMTP', package => 'Net::SMTP', port => 25 }, + tls => { require_module => 'Net::SSLGlue::SMTP', package => 'Net::SMTP', port => 25 }, + ssl => { require_module => 'Net::SMTP::SSL', package => 'Net::SMTP::SSL', port => 465 }, +); + sub init { my ($self) = @_; Rose::Object::init(@_); my $cfg = $::lx_office_conf{mail_delivery} || {}; - $self->{security} = lc($cfg->{security} || 'none'); - - if ($self->{security} eq 'tls') { - require Net::SMTP::TLS; - my %params; - if ($cfg->{login}) { - $params{User} = $cfg->{user}; - $params{Password} = $cfg->{password}; - } - $self->{smtp} = Net::SMTP::TLS->new($cfg->{host} || 'localhost', Port => $cfg->{port} || 25, %params); - - } else { - my $module = $self->{security} eq 'ssl' ? 'Net::SMTP::SSL' : 'Net::SMTP'; - my $default_port = $self->{security} eq 'ssl' ? 465 : 25; - eval "require $module" or die $@; - - $self->{smtp} = $module->new($cfg->{host} || 'localhost', Port => $cfg->{port} || $default_port); - $self->{smtp}->auth($cfg->{user}, $cfg->{password}) if $cfg->{login}; - } + $self->{security} = exists $security_config{lc $cfg->{security}} ? lc $cfg->{security} : 'none'; + my $sec_cfg = $security_config{ $self->{security} }; + + eval "require $sec_cfg->{require_module}" or die "$@"; + $self->{smtp} = $sec_cfg->{package}->new($cfg->{host} || 'localhost', Port => $cfg->{port} || $sec_cfg->{port}); die unless $self->{smtp}; + + $self->{smtp}->starttls(SSL_verify_mode => 0) || die if $self->{security} eq 'tls'; + + return 1 unless $cfg->{login}; + + $self->{smtp}->auth($cfg->{user}, $cfg->{password}) or die; } sub start_mail {