这就是我所拥有的......
我有一个跟踪条形码类型标签的程序。我可以在数据库中选择一个项目并为其打印标签。我添加了将电子邮件发送到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)
{
}
}
提前致谢!
保
答案 0 :(得分:2)
我想到的第一个想法是System.Timers.Timer
定期执行readEmail()
。
另一个选项是简单地为每隔x分钟运行一次的exe使用一个Scheduled Task并执行你的方法。