с помощью perl-скрипта, запускаемого каждые 30 минут и использующего IMAP :: Client, который преобразует сообщения, предупреждающие о любых окнах обслуживания, в наши маршрутизаторы в событиях icalendar.С IMAP я получал только невидимые письма.Теперь наш почтовый ящик перенесен на сервер Exchange.
Я изменил сценарий, чтобы использовать вместо него Email :: Folder :: Exchange, и мне это удалось, но моя проблема в том, что письма не помечаются как «прочитанные» автоматически.Я гуглил, как это сделать, и выяснил, что SOAP :: Lite может этого добиться, но я не представляю, как начать или как использовать объект soap (), возвращенный из Email :: Folder :: Exchange
$ENV{'PERL_LWP_SSL_VERIFY_HOSTNAME'} = 0;
use Email::Folder::Exchange;
use Mail::IMAPClient;
use Email::MIME;
use MIME::Parser;
use Spreadsheet::ParseXLSX;
use Spreadsheet::ParseExcel;
require("../.confidence/passdb.inc");
our ($mail_username, $MailUserPassword);
my $mail_debug = 0;
my $SelectedServer = "https://outlook.office365.com/EWS/Exchange.asmx";
my $Mailbox = Email::Folder::Exchange->new($SelectedServer, $mail_username, $MailUserPassword);
my $soap_client = $Mailbox->soap();
if ($soap_client->proxy->is_success) {
my $msgct = $Mailbox->unread_count||'0';
if ($msgct == 0) {
print "no new mails!\n";
exit(0);
} else {
print $msgct . "new unread mails\n" if ($mail_debug);
}
foreach my $message ($Mailbox->messages) {
&ReadMail($message->as_string);
}
&SetAsRead($soap_client);
}
exit(0);
sub ReadMail {
//read Mail and update icalendar
//this works !!
}
sub SetAsRead {
//How should I handel with SOAP
}
В документах Microsoft со ссылками на веб-службы я обнаружил только операцию "MarkAllItemsAsRead"!
Большое спасибо за любую помощь