Perl и Exchange (EWS) с электронной почтой :: Folder :: Exchange: как помечать письма как «прочитанные» - PullRequest
0 голосов
/ 24 мая 2019

с помощью 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"!

Большое спасибо за любую помощь

...