3
以下是我的...以編程方式監視Exchange收件箱和打印標籤
我有一個跟蹤條碼類型標籤的程序。我可以選擇數據庫中的一個項目併爲其打印標籤。我添加了將電子郵件發送到Exchange服務器(2007 SP1)上的特定收件箱並在主題行中輸入項目ID的功能,然後使用該ID打印標籤。到目前爲止,我可以從Exchange中讀取並提取ID號,然後將其發送到報告並將報告打印出來。我被卡住的地方是監控收件箱。如何讓readEmail()方法自動啓動?沒有事件可以做到這一點。我必須讓它自己檢查收件箱。這個想法是如此,如果我們需要打印標籤,我們可以發送一封電子郵件到這個收件箱,標籤會自動打印。只有一個人可以打印這些,如果他不在這裏,並且有人需要標籤,這可以讓他發送電子郵件並打印標籤。
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)
{
}
}
在此先感謝!
保羅
謝謝。我添加了一個監視器對象,將其設置爲30秒(當我們運行時會使它更長),啓動它,當它運行時說,運行方法如上。我在開始時停止了計時器,並重置,然後在最後開始計時。問題是現在當我訪問窗體上的對象時,我得到一個交叉線程錯誤。所以我想弄清楚如何獲取數據,而不是依賴表單。 – 2011-02-07 23:23:49