- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试编写一个控制台应用程序,它将使用 EWS 建立与邮箱的连接,然后在每次收到新电子邮件时打印一行。
一旦我完成这项工作,最终结果就是将其变成一项服务,并且每次电子邮件到达某个邮箱时都会创建一个任务,但现在我无法让控制台在收到时写一行。
控制台应用程序项目
Program.cs
class Program
{
static void Main(string[] args)
{
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013);
WebCredentials wbcred = new WebCredentials("myusername", "mypassw0rd");
service.Credentials = wbcred;
service.AutodiscoverUrl("myemailaddress@mydomain.com", RedirectionUrlValidationCallback);
EWSConnection.SetStreamingNotifications(service);
}
internal static bool RedirectionUrlValidationCallback(string redirectionUrl)
{
//The default for the validation callback is to reject the URL
bool result = false;
Uri redirectionUri = new Uri(redirectionUrl);
if (redirectionUri.Scheme == "https")
{
result = true;
}
return result;
}
}
类库项目
EWSConnection.cs
public static void SetStreamingNotifications(ExchangeService service)
{
StreamingSubscription subscription;
// Subscribe to streaming notifications in the Inbox.
subscription = service.SubscribeToStreamingNotifications(
new FolderId[] { WellKnownFolderName.Inbox },
EventType.NewMail);
// Create a streaming connection to the service object, over which events are returned to the client.
// Keep the streaming connection open for 30 minutes.
StreamingSubscriptionConnection connection = new StreamingSubscriptionConnection(service, 30);
connection.AddSubscription(subscription);
connection.OnNotificationEvent += OnEvent;
connection.OnDisconnect += OnDisconnect;
connection.Open();
bool status = connection.IsOpen;
Console.WriteLine($"Connection Open:{status}");
}
如果需要,我可以添加 OnEvent
和 OnDisconnect
方法。正在发生的事情是控制台打印
Connection Open:True Press any key to continue . . .
然后,当我向该邮箱发送电子邮件时,没有任何反应,没有触发断点,也没有向控制台输出任何内容,这就是这两种方法所做的。
为什么我的 OnEvent
方法没有触发?
编辑 - OnEvent 和 OnDisconnect 方法
public static void OnEvent(object sender, NotificationEventArgs args)
{
StreamingSubscription subscription = args.Subscription;
// Loop through all item-related events.
foreach (NotificationEvent notification in args.Events)
{
switch (notification.EventType)
{
case EventType.NewMail:
Console.WriteLine("\n————-Mail created:————-");
break;
case EventType.Created:
Console.WriteLine("\n————-Item or folder created:————-");
break;
case EventType.Deleted:
Console.WriteLine("\n————-Item or folder deleted:————-");
break;
}
// Display the notification identifier.
if (notification is ItemEvent)
{
// The NotificationEvent for an e-mail message is an ItemEvent.
ItemEvent itemEvent = (ItemEvent)notification;
Console.WriteLine("\nItemId: " + itemEvent.ItemId.UniqueId);
}
else
{
// The NotificationEvent for a folder is an FolderEvent.
FolderEvent folderEvent = (FolderEvent)notification;
Console.WriteLine("\nFolderId: " + folderEvent.FolderId.UniqueId);
}
}
}
和
public static void OnDisconnect(object sender, SubscriptionErrorEventArgs args)
{
// Cast the sender as a StreamingSubscriptionConnection object.
StreamingSubscriptionConnection connection = (StreamingSubscriptionConnection)sender;
// Ask the user if they want to reconnect or close the subscription.
ConsoleKeyInfo cki;
Console.WriteLine("The connection to the subscription is disconnected.");
Console.WriteLine("Do you want to reconnect to the subscription? Y/N");
while (true)
{
cki = Console.ReadKey(true);
{
if (cki.Key == ConsoleKey.Y)
{
connection.Open();
Console.WriteLine("Connection open.");
break;
}
else if (cki.Key == ConsoleKey.N)
{
// The ReadKey in the Main() consumes the E.
Console.WriteLine("\n\nPress E to exit");
break;
}
}
}
}
最佳答案
令人恼火的是,我错过了 Console.ReadKey() 方法。一旦我添加了它,它就按预期工作了......
static void Main(string[] args)
{
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013);
WebCredentials wbcred = new WebCredentials("myusername", "mypassw0rd","myDomain");
service.Credentials = wbcred;
service.AutodiscoverUrl("myemailaddress@mydomain.com", RedirectionUrlValidationCallback);
EWSConnection.SetStreamingNotifications(service);
Console.ReadKey(); //<-- this was missing
}
关于c# - EWS 订阅收件箱中的流式通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39407926/
我正在做一个项目,具体来说是一个网站,其中有一个收件箱或消息,用户可以在其中向其他用户发送消息。 我正在网上查看如何为此创建数据模型,你能帮我解决这个问题吗?我一开始所做的是将他们尝试输入的每条文本或
我目前正在尝试使用 Perl 连接到 gmail 收件箱和 Net::IMAP::Client 使用以下代码 use strict; use warnings; use Net::IMAP::Clie
我想制作一个桌面应用程序,它可以从通过 USB 数据线连接到 PC 的安卓手机读取短信。有没有可能我在网上搜索过任何入门点,有关于通过 android 应用程序阅读短信的教程...有人可以指导我正确的
我有一个用于删除邮件的收件箱代码。 如果我选择一条消息,它将删除所有消息。 我该如何解决这个问题? 这是我的delete_message.php代码: 这是 inbox.php 中带有复选框的代码
这个问题在这里已经有了答案: How to send email in Android ? [duplicate] (3 个答案) 关闭 8 年前。 如何在我们的应用中打开收件箱。 final St
今天我看到了收件箱应用程序。 (来源:cbsistatic.com) 我想知道如何在工具栏(searchButton 的左侧)上制作那个切换按钮。我没有找到对(或者我搜索不多)的引用。 谢谢^^ 最佳
我想使用 Google.GData.Client.dll 阅读我的 Gmail 收件箱。我该如何做到这一点?我想要一个示例程序。 最佳答案 我找到了 GMailAtomFeed // Creat
我有代码可以搜索用户的 Outlook 并根据您在工作表单元格中输入的主题短语回复电子邮件。几天前我确实让它工作了,但现在我似乎无法让它工作(已被删除)。运行后,将持续显示代码行“Set olitem
我正在尝试连接到本地托管的电子邮件 POP3 收件箱并在邮箱中显示电子邮件,但我不断收到错误: Exception in thread "main" javax.mail.MessagingExcep
我想使用 java (SE) 在 MS Outlook (2010) 中阅读我的收件箱,然后将消息/电子邮件移动到另一个文件夹。我曾尝试在网络上搜索,但只找到了许可的解决方案或几年前的帖子。有人对此步
这个问题在这里已经有了答案: launch sms application with an intent (22 个答案) 关闭 7 年前。 我想在我的应用程序中点击一个按钮来打开 Android
我正在运行 Xubuntu 13.04 并安装了最新版本的 libcurl/curl: $ curl -V curl 7.29.0 (i686-pc-linux-gnu) libcurl/7.29.0
我正在做一个项目,用户将首先保存他的 gmail id 和密码,确认后,我将提供一个链接,下次无需输入他的 gmail id 和密码,直接登录 gmail.. 保存的密码将作为参数传递使用 CURL
如何使用 ASP.NET 3.5 和 C# 向 facebook 用户收件箱发送消息?我可以使用 fbAPI.Stream.Publish() 在墙上发布消息,但我需要将消息发送到收件箱,并且必须是个
我正在尝试通过 google 找到的这段代码,但它没有连接到我的 gmail 收件箱。为什么? 我收到此错误消息: --------------processing mails started---
我想将通过 C2DM 收到的消息发送到手机的 SMS 收件箱,并得出结论,这可能是通过让 Android 认为 C2DM 是真正的 SMS 并让它发挥其魔力来实现的。 我已经追踪了相当多的 Andro
我正在尝试从 Gmail 地址(或主题)获取特定电子邮件。我使用 selenium 是因为这个 gmail 帐户无法使用 imaplib。我卡在这里: driver.find_element_by_i
我使用修改自以下代码的一些代码成功连接并阅读我的 Outlook 收件箱:Reading e-mails from Outlook with Python through MAPI 。我想做的是在我的
我从这里得到了一个代码来下载 gmail 收件箱: http://davidwalsh.name/gmail-php-imap use these 2 hostnames $hostname = '{
我需要在 TableView 中显示其他参与者的姓名和图像,就像 Facebook 收件箱一样。我正在使用此 fql 查询来获取收件人。 - (void)readInbox { NSStrin
我是一名优秀的程序员,十分优秀!