3

これが私が持っているものです...

バーコードタイプのラベルを追跡するプログラムがあります。データベース内のアイテムを選択して、そのラベルを印刷できます。Exchangeサーバー(2007 SP1)の特定の受信トレイに、件名にアイテムIDを含めて電子メールを送信し、そのIDでラベルを印刷する機能を追加しています。これまでのところ、Exchangeから読み取り、ID番号を抽出し、それをレポートに送信して、レポートに印刷させることができます。私が立ち往生しているのは、受信トレイの監視です。readEmail()メソッドを自動的に起動するにはどうすればよいですか?これを実現するイベントはありません。受信トレイを自分でチェックするようにする必要があります。ラベルを印刷する必要がある場合は、この受信トレイにメールを送信するだけで、ラベルが自動的に印刷されます。これらを印刷できるのは1人だけで、彼がここにいなくて誰かがラベルを必要としている場合、これにより彼は電子メールを送信してラベルを印刷することができます。

private void readEmail()
{
   ExchangeService _mailService = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
  _mailService.UseDefaultCredentials = true;
  _mailService.Url = new Uri("https://webmail.mydomain.com/ews/exchange.asmx");

  try
  {
    ItemView allItems = new ItemView(100);
    SearchFilter searchFilterInbox = new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false);
    Folder _inbox = Folder.Bind(_mailService, WellKnownFolderName.Inbox);

    if (_inbox.UnreadCount > 0)
    {
      FindItemsResults<Item> findResults = _inbox.FindItems(searchFilterInbox, allItems);
      List<Item> resultItems = new List<Item>();
      foreach (Item item in findResults.Items)
      {
        resultItems.Add(item);
        _mailService.LoadPropertiesForItems(resultItems, PropertySet.FirstClassProperties);
        cboPropertyTag.Text = item.Subject;
        GetReportVariables();
        reportType = "autoPrint";
        reportViewer rv = new reportViewer();
        rv.Show();
        item.Move(WellKnownFolderName.DeletedItems);
      }
    }
  }
  catch (ServiceVersionException)
  {
  }
}

前もって感謝します!

ポール

4

1 に答える 1

2

頭に浮かぶ最初のアイデアは、System.Timers.Timer定期的に実行するものreadEmail()です。

もう1つのオプションは、x分ごとに実行され、メソッドを実行するexeに対してスケジュールされたタスクを使用することです。

于 2011-02-07T20:40:48.310 に答える