使用Email :: Folder :: Exchange的Perl和Exchange(EWS):如何将邮件标记为“已读”

时间:2019-05-24 11:34:54

标签: perl soap exchangewebservices

每30分钟运行一次perl脚本,并使用IMAP :: Client在icalendar Events中将将任何维护Windows取消通知的邮件转换为我们的路由器。使用IMAP,我仅获得了看不见的邮件。 现在,我们的MailInbox已在Exchange Server上移动。

我已将脚本更改为使用Email :: Folder :: Exchange,并且我可以成功使用它,但是我的问题是邮件没有自动标记为“已读”。 我已经用谷歌搜索了如何完成这项工作,并找到了使用SOAP :: Lite可以实现的方法,但是我不知道如何开始或如何使用从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
}

在带有Web服务引用的Microsoft文档中,我发现“仅MarkAllItemsAsRead”操作!

非常感谢您的帮助

0 个答案:

没有答案