E-Mails auch per SMTP verschicken können
[kivitendo-erp.git] / SL / Mailer / SMTP.pm
1 package SL::Mailer::SMTP;
2
3 use strict;
4
5 use parent qw(Rose::Object);
6
7 use Rose::Object::MakeMethods::Generic
8 (
9   scalar => [ qw(myconfig mailer form) ]
10 );
11
12 sub init {
13   my ($self) = @_;
14
15   Rose::Object::init(@_);
16
17   my $cfg           = $::lx_office_conf{mail_delivery} || {};
18   $self->{security} = lc($cfg->{security} || 'none');
19
20   if ($self->{security} eq 'tls') {
21     require Net::SMTP::TLS;
22     my %params;
23     if ($cfg->{login}) {
24       $params{User}     = $cfg->{user};
25       $params{Password} = $cfg->{password};
26     }
27     $self->{smtp} = Net::SMTP::TLS->new($cfg->{host} || 'localhost', Port => $cfg->{port} || 25, %params);
28
29   } else {
30     my $module       = $self->{security} eq 'ssl' ? 'Net::SMTP::SSL' : 'Net::SMTP';
31     my $default_port = $self->{security} eq 'ssl' ? 465              : 25;
32     eval "require $module" or die $@;
33
34     $self->{smtp} = $module->new($cfg->{host} || 'localhost', Port => $cfg->{port} || $default_port);
35     $self->{smtp}->auth($cfg->{user}, $cfg->{password}) if $cfg->{login};
36   }
37
38   die unless $self->{smtp};
39 }
40
41 sub start_mail {
42   my ($self, %params) = @_;
43
44   $self->{smtp}->mail($params{from});
45   $self->{smtp}->recipient(@{ $params{to} });
46   $self->{smtp}->data;
47 }
48
49 sub print {
50   my $self = shift;
51
52   $self->{smtp}->datasend(@_);
53 }
54
55 sub send {
56   my ($self) = @_;
57
58   $self->{smtp}->dataend;
59   $self->{smtp}->quit;
60   delete $self->{smtp};
61 }
62
63 sub keep_from_header {
64   my ($self, $item) = @_;
65   return lc($item) eq 'bcc';
66 }
67
68 1;