25 |
25 |
|
26 |
26 |
use IO::Socket::INET;
|
27 |
27 |
use IO::Socket::SSL;
|
28 |
|
use Mail::IMAPClient;
|
29 |
28 |
use Email::Address;
|
30 |
29 |
use Email::MIME::Creator;
|
31 |
30 |
use Encode;
|
... | ... | |
41 |
40 |
use SL::Locale::String qw(t8);
|
42 |
41 |
use SL::Template;
|
43 |
42 |
use SL::Version;
|
|
43 |
use SL::IMAPClient;
|
44 |
44 |
|
45 |
45 |
use strict;
|
46 |
46 |
|
... | ... | |
348 |
348 |
|| $::lx_office_conf{"sent_emails_in_imap/email/$user_email"}
|
349 |
349 |
|| $::lx_office_conf{sent_emails_in_imap}
|
350 |
350 |
|| {};
|
351 |
|
return unless ($config->{enabled} && $config->{hostname});
|
352 |
|
|
353 |
|
my $socket;
|
354 |
|
if ($config->{ssl}) {
|
355 |
|
$socket = IO::Socket::SSL->new(
|
356 |
|
Proto => 'tcp',
|
357 |
|
PeerAddr => $config->{hostname},
|
358 |
|
PeerPort => $config->{port} || 993,
|
359 |
|
);
|
360 |
|
} else {
|
361 |
|
$socket = IO::Socket::INET->new(
|
362 |
|
Proto => 'tcp',
|
363 |
|
PeerAddr => $config->{hostname},
|
364 |
|
PeerPort => $config->{port} || 143,
|
365 |
|
);
|
366 |
|
}
|
367 |
|
if (!$socket) {
|
368 |
|
die "Failed to create socket for IMAP client: $@\n";
|
369 |
|
}
|
|
351 |
return unless ($config->{enabled});
|
370 |
352 |
|
371 |
|
my $imap = Mail::IMAPClient->new(
|
372 |
|
Socket => $socket,
|
373 |
|
User => $config->{username},
|
374 |
|
Password => $config->{password},
|
375 |
|
) or do {
|
376 |
|
die "Failed to create IMAP Client: $@\n"
|
377 |
|
};
|
|
353 |
my $imap_client = SL::IMAPClient->new(%$config);
|
378 |
354 |
|
379 |
|
$imap->IsAuthenticated() or do {
|
380 |
|
die "IMAP Client login failed: " . $imap->LastError() . "\n";
|
381 |
|
};
|
382 |
|
|
383 |
|
my $separator = $imap->separator();
|
384 |
|
my $folder = $config->{folder} || 'Sent/Kivitendo';
|
385 |
|
$folder =~ s|/|${separator}|g;
|
386 |
|
|
387 |
|
$imap->append_string($folder, $email_as_string) or do {
|
388 |
|
my $last_error = $imap->LastError();
|
389 |
|
$imap->logout();
|
390 |
|
die "IMAP Client append failed: $last_error\n";
|
391 |
|
};
|
|
355 |
$imap_client->store_email_in_email_folder(
|
|
356 |
$email_as_string,
|
|
357 |
$config->{folder} ||'Sent/Kivitendo'
|
|
358 |
);
|
392 |
359 |
|
393 |
|
$imap->logout();
|
394 |
360 |
return 1;
|
395 |
361 |
}
|
396 |
362 |
|
Imap-Sent verschiebe IMAP-Logik nach IMAPClient