public static void Run() { // Connect to EWS const string mailboxUri = "https://outlook.office365.com/ews/exchange.asmx"; const string username = "******"; const string password = "******"; const string domain = "domain"; try { IEWSClient client = EWSClient.GetEWSClient(mailboxUri, username, password, domain); // ExStart:CaseSensitiveEmailsFiltering // Query building by means of ExchangeQueryBuilder class ExchangeQueryBuilder builder = new ExchangeQueryBuilder(); builder.Subject.Contains("Newsletter", true); builder.InternalDate.On(DateTime.Now); MailQuery query = builder.GetQuery(); // ExEnd:CaseSensitiveEmailsFiltering // Get list of messages ExchangeMessageInfoCollection messages = client.ListMessages(client.MailboxInfo.InboxUri, query, false); Console.WriteLine("EWS: " + messages.Count + " message(s) found."); // Disconnect from EWS client.Dispose(); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public static void FilterMessagesWithPagingSupport() { const string mailboxUri = "https://outlook.office365.com/ews/exchange.asmx"; const string username = "******"; const string password = "******"; const string domain = "domain"; IEWSClient client = EWSClient.GetEWSClient(mailboxUri, username, password, domain); //ExStart: FilterMessagesWithPagingSupport int itemsPerPage = 5; string sGuid = Guid.NewGuid().ToString(); string str1 = sGuid + " - " + "Query 1"; string str2 = sGuid + " - " + "Query 2"; MailQueryBuilder queryBuilder1 = new MailQueryBuilder(); queryBuilder1.Subject.Contains(str1); MailQuery query1 = queryBuilder1.GetQuery(); List <ExchangeMessagePageInfo> pages = new List <ExchangeMessagePageInfo>(); ExchangeMessagePageInfo pageInfo = client.ListMessagesByPage(client.MailboxInfo.InboxUri, query1, itemsPerPage); pages.Add(pageInfo); int str1Count = pageInfo.Items.Count; while (!pageInfo.LastPage) { pageInfo = client.ListMessagesByPage(client.MailboxInfo.InboxUri, query1, itemsPerPage, pageInfo.PageOffset + 1); pages.Add(pageInfo); str1Count += pageInfo.Items.Count; } //ExEnd: FilterMessagesWithPagingSupport }
public static void Run() { // Connect and log in to IMAP const string host = "host"; const int port = 143; const string username = "******"; const string password = "******"; ImapClient client = new ImapClient(host, port, username, password); try { client.SelectFolder("Inbox"); // ExStart:SpecifyEncodingForQueryBuilder // Set conditions ImapQueryBuilder builder = new ImapQueryBuilder(Encoding.UTF8); builder.Subject.Contains("ğüşıöç", true); MailQuery query = builder.GetQuery(); // ExEnd:SpecifyEncodingForQueryBuilder // Get list of messages ImapMessageInfoCollection messages = client.ListMessages(query); foreach (ImapMessageInfo info in messages) { Console.WriteLine("Message Id: " + info.MessageId); } // Disconnect from IMAP client.Dispose(); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public static void Run() { // ExStart:FilterMessagesFromExchangeMailbox try { // Connect to Exchange Server const string mailboxUri = "http://exchange-server/Exchange/username"; const string username = "******"; const string password = "******"; const string domain = "domain.com"; NetworkCredential credential = new NetworkCredential(username, password, domain); ExchangeClient client = new ExchangeClient(mailboxUri, credential); // Query building by means of ExchangeQueryBuilder class ExchangeQueryBuilder builder = new ExchangeQueryBuilder(); // Set Subject and Emails that arrived today builder.Subject.Contains("Newsletter"); builder.InternalDate.On(DateTime.Now); MailQuery query = builder.GetQuery(); // Get list of messages ExchangeMessageInfoCollection messages = client.ListMessages(client.MailboxInfo.InboxUri, query, false); Console.WriteLine("Exchange: " + messages.Count + " message(s) found."); // Disconnect from Exchange client.Dispose(); } catch (Exception ex) { Console.WriteLine(ex.Message); } // ExEnd:FilterMessagesFromExchangeMailbox }
public static void Run() { // Create an instance of the ImapClient class ImapClient client = new ImapClient(); // Specify host, username, password, port and SecurityOptions for your client client.Host = "imap.gmail.com"; client.Username = "******"; client.Password = "******"; client.Port = 993; client.SecurityOptions = SecurityOptions.Auto; try { // ExStart:ListMessagesAsynchronouslyWithMailQuery ImapQueryBuilder builder = new ImapQueryBuilder(); builder.Subject.Contains("Subject"); MailQuery query = builder.GetQuery(); IAsyncResult asyncResult = client.BeginListMessages(query); ImapMessageInfoCollection messages = client.EndListMessages(asyncResult); // ExEnd:ListMessagesAsynchronouslyWithMailQuery Console.WriteLine("New Message Added Successfully"); client.Dispose(); } catch (Exception ex) { Console.Write(Environment.NewLine + ex); } }
public static void Run() { // ExStart:FilteringMessagesFromIMAPMailbox // Connect and log in to IMAP const string host = "host"; const int port = 143; const string username = "******"; const string password = "******"; ImapClient client = new ImapClient(host, port, username, password); client.SelectFolder("Inbox"); // Set conditions, Subject contains "Newsletter", Emails that arrived today ImapQueryBuilder builder = new ImapQueryBuilder(); builder.Subject.Contains("Newsletter"); builder.InternalDate.On(DateTime.Now); // Build the query and Get list of messages MailQuery query = builder.GetQuery(); ImapMessageInfoCollection messages = client.ListMessages(query); Console.WriteLine("Imap: " + messages.Count + " message(s) found."); // Disconnect from IMAP client.Dispose(); // ExEnd:FilteringMessagesFromIMAPMailbox }
public static void Run() { // Connect to EWS const string mailboxUri = "https://outlook.office365.com/ews/exchange.asmx"; const string username = "******"; const string password = "******"; const string domain = "domain"; //ExStart: FilterAppointmentsByDateUsingEWS IEWSClient client = EWSClient.GetEWSClient(mailboxUri, username, password, domain); DateTime startTime = new DateTime(2017, 09, 15); DateTime endTime = new DateTime(2017, 10, 10); ExchangeQueryBuilder builder = new ExchangeQueryBuilder(); builder.Appointment.Start.Since(startTime); builder.Appointment.End.BeforeOrEqual(endTime); MailQuery query = builder.GetQuery(); Appointment[] appointments = client.ListAppointments(query); //ExEnd: FilterAppointmentsByDateUsingEWS //ExStart: FilterAppointmentsByRecurrenceUsingEWS builder = new ExchangeQueryBuilder(); builder.Appointment.IsRecurring.Equals(false); query = builder.GetQuery(); appointments = client.ListAppointments(query); //ExEnd: FilterAppointmentsByRecurrenceUsingEWS }
public static void Run() { // The path to the File directory. // ExStart:SearchStringInPSTWithIgnoreCaseParameter string dataDir = RunExamples.GetDataDir_Outlook(); string path = dataDir + "SearchStringInPSTWithIgnoreCaseParameter_out.pst"; if (File.Exists(path)) { File.Delete(path); } using (PersonalStorage personalStorage = PersonalStorage.Create(dataDir + "SearchStringInPSTWithIgnoreCaseParameter_out.pst", FileFormatVersion.Unicode)) { FolderInfo folderInfo = personalStorage.CreatePredefinedFolder("Inbox", StandardIpmFolder.Inbox); folderInfo.AddMessage(MapiMessage.FromMailMessage(MailMessage.Load(dataDir + "Message.eml"))); PersonalStorageQueryBuilder builder = new PersonalStorageQueryBuilder(); // IgnoreCase is True builder.From.Contains("automated", true); MailQuery query = builder.GetQuery(); MessageInfoCollection coll = folderInfo.GetContents(query); Console.WriteLine(coll.Count); } // ExEnd:SearchStringInPSTWithIgnoreCaseParameter }
public static void Run() { Pop3Client client = new Pop3Client(); client.Host = "pop.gmail.com"; client.Port = 995; client.SecurityOptions = SecurityOptions.SSLImplicit; client.Username = "******"; client.Password = "******"; try { // ExStart:ListMessagesAsynchronouslyWithMailQuery MailQueryBuilder builder = new MailQueryBuilder(); builder.Subject.Contains("Subject"); MailQuery query = builder.GetQuery(); IAsyncResult asyncResult = client.BeginListMessages(query); Pop3MessageInfoCollection messages = client.EndListMessages(asyncResult); // ExEnd:ListMessagesAsynchronouslyWithMailQuery } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public static void Run() { // ExStart:FilterTasksFromServer // Set mailboxURI, Username, password, domain information string mailboxUri = "https://ex2010/ews/exchange.asmx"; string username = "******"; string password = "******"; string domain = "ex2010.local"; NetworkCredential credentials = new NetworkCredential(username, password, domain); IEWSClient client = EWSClient.GetEWSClient(mailboxUri, credentials); ExchangeQueryBuilder queryBuilder = null; MailQuery query = null; ExchangeTask fetchedTask = null; ExchangeMessageInfoCollection messageInfoCol = null; client.TimezoneId = "Central Europe Standard Time"; Array values = Enum.GetValues(typeof(ExchangeTaskStatus)); //Now retrieve the tasks with specific statuses foreach (ExchangeTaskStatus status in values) { queryBuilder = new ExchangeQueryBuilder(); queryBuilder.TaskStatus.Equals(status); query = queryBuilder.GetQuery(); messageInfoCol = client.ListMessages(client.MailboxInfo.TasksUri, query); fetchedTask = client.FetchTask(messageInfoCol[0].UniqueUri); } //retrieve all other than specified foreach (ExchangeTaskStatus status in values) { queryBuilder = new ExchangeQueryBuilder(); queryBuilder.TaskStatus.NotEquals(status); query = queryBuilder.GetQuery(); messageInfoCol = client.ListMessages(client.MailboxInfo.TasksUri, query); } //specifying multiple criterion ExchangeTaskStatus[] selectedStatuses = new ExchangeTaskStatus[] { ExchangeTaskStatus.Completed, ExchangeTaskStatus.InProgress }; queryBuilder = new ExchangeQueryBuilder(); queryBuilder.TaskStatus.In(selectedStatuses); query = queryBuilder.GetQuery(); messageInfoCol = client.ListMessages(client.MailboxInfo.TasksUri, query); queryBuilder = new ExchangeQueryBuilder(); queryBuilder.TaskStatus.NotIn(selectedStatuses); query = queryBuilder.GetQuery(); messageInfoCol = client.ListMessages(client.MailboxInfo.TasksUri, query); //ExEnd:FilterTasksFromServer }
public static void SendInstallInfo(UserInfo user) { if (!TenantExtra.Opensource) { return; } if (!WizardSettings.Load().Analytics) { return; } try { var url = ConfigurationManagerExtension.AppSettings["web.install-url"]; if (string.IsNullOrEmpty(url)) { return; } var tenant = CoreContext.TenantManager.GetCurrentTenant(); var q = new MailQuery { Email = user.Email, Id = CoreContext.Configuration.GetKey(tenant.TenantId), Alias = tenant.TenantDomain, }; var index = url.IndexOf("?v=", StringComparison.InvariantCultureIgnoreCase); if (0 < index) { q.Version = url.Substring(index + 3) + Environment.OSVersion; url = url.Substring(0, index); } using (var webClient = new WebClient()) { var values = new NameValueCollection { { "query", Signature.Create(q, "4be71393-0c90-41bf-b641-a8d9523fba5c") } }; webClient.UploadValues(url, values); } } catch (Exception error) { LogManager.GetLogger("ASC.Web").Error(error); } }
public static void Run() { // ExStart:ListTasksFromExchangeServerWithEWS // Set mailboxURI, Username, password, domain information string mailboxUri = "https://ex2010/ews/exchange.asmx"; string username = "******"; string password = "******"; string domain = "ex2010.local"; NetworkCredential credentials = new NetworkCredential(username, password, domain); IEWSClient client = EWSClient.GetEWSClient(mailboxUri, credentials); //Listing Tasks from Server client.TimezoneId = "Central Europe Standard Time"; TaskCollection taskCollection = client.ListTasks(client.MailboxInfo.TasksUri); //print retrieved tasks' details foreach (ExchangeTask task in taskCollection) { Console.WriteLine(client.TimezoneId); Console.WriteLine(task.Subject); Console.WriteLine(task.StartDate); Console.WriteLine(task.DueDate); } //Listing Tasks from server based on Query - Completed and In-Progress ExchangeQueryBuilder builder = new ExchangeQueryBuilder(); ExchangeTaskStatus[] selectedStatuses = new ExchangeTaskStatus[] { ExchangeTaskStatus.Completed, ExchangeTaskStatus.InProgress }; builder.TaskStatus.In(selectedStatuses); MailQuery query = builder.GetQuery(); taskCollection = client.ListTasks(client.MailboxInfo.TasksUri, query); //print retrieved tasks' details foreach (ExchangeTask task in taskCollection) { Console.WriteLine(client.TimezoneId); Console.WriteLine(task.Subject); Console.WriteLine(task.StartDate); Console.WriteLine(task.DueDate); } //ExEnd:ListTasksFromExchangeServerWithEWS }
public static void Run() { // Connect to EWS const string mailboxUri = "https://outlook.office365.com/ews/exchange.asmx"; const string username = "******"; const string password = "******"; const string domain = "domain"; try { IEWSClient client = EWSClient.GetEWSClient(mailboxUri, username, password, domain); MailQueryBuilder builder = new MailQueryBuilder(); // ExStart:CombineQueriesWithAND // Emails from specific host, get all emails that arrived before today and all emails that arrived since 7 days ago builder.From.Contains("SpecificHost.com"); builder.InternalDate.Before(DateTime.Now); builder.InternalDate.Since(DateTime.Now.AddDays(-7)); // ExEnd:CombineQueriesWithAND // Build the query and Get list of messages MailQuery query = builder.GetQuery(); ExchangeMessageInfoCollection messages = client.ListMessages(client.MailboxInfo.InboxUri, query); Console.WriteLine("EWS: " + messages.Count + " message(s) found."); builder = new MailQueryBuilder(); // ExStart:CombiningQueriesWithOR builder.Or(builder.Subject.Contains("test"), builder.From.Contains("*****@*****.**")); // ExEnd:CombiningQueriesWithOR // Build the query and Get list of messages query = builder.GetQuery(); messages = client.ListMessages(client.MailboxInfo.InboxUri, query); Console.WriteLine("EWS: " + messages.Count + " message(s) found."); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public static void Run() { // Connect and log in to POP3 const string host = "host"; const int port = 110; const string username = "******"; const string password = "******"; Pop3Client client = new Pop3Client(host, port, username, password); try { MailQueryBuilder builder = new MailQueryBuilder(); // ExStart:CombineQueriesWithAND // Emails from specific host, get all emails that arrived before today and all emails that arrived since 7 days ago builder.From.Contains("SpecificHost.com"); builder.InternalDate.Before(DateTime.Now); builder.InternalDate.Since(DateTime.Now.AddDays(-7)); // ExEnd:CombineQueriesWithAND // Build the query and Get list of messages MailQuery query = builder.GetQuery(); Pop3MessageInfoCollection messages = client.ListMessages(query); Console.WriteLine("Pop3: " + messages.Count + " message(s) found."); builder = new MailQueryBuilder(); // ExStart:CombiningQueriesWithOR // Specify OR condition builder.Or(builder.Subject.Contains("test"), builder.From.Contains("*****@*****.**")); // ExEnd:CombiningQueriesWithOR // Build the query and Get list of messages query = builder.GetQuery(); messages = client.ListMessages(query); Console.WriteLine("Pop3: " + messages.Count + " message(s) found."); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public static void SendInstallInfo(UserInfo user) { try { StudioNotifyService.Instance.SendCongratulations(user); } catch (Exception error) { LogManager.GetLogger("ASC.Web").Error(error); } try { var url = WebConfigurationManager.AppSettings["web.install-url"]; if (!string.IsNullOrEmpty(url)) { var tenant = CoreContext.TenantManager.GetCurrentTenant(); var q = new MailQuery { Email = user.Email, Id = CoreContext.Configuration.GetKey(tenant.TenantId), Alias = tenant.TenantDomain, }; var index = url.IndexOf("?v="); if (0 < index) { q.Version = url.Substring(index + 3); url = url.Substring(0, index); } using (var webClient = new WebClient()) { var values = new NameValueCollection(); values.Add("query", Signature.Create<MailQuery>(q, "4be71393-0c90-41bf-b641-a8d9523fba5c")); webClient.UploadValues(url, values); } } } catch (Exception error) { LogManager.GetLogger("ASC.Web").Error(error); } }
public static void SendInstallInfo(UserInfo user) { try { StudioNotifyService.Instance.SendCongratulations(user); } catch (Exception error) { LogManager.GetLogger("ASC.Web").Error(error); } try { var url = WebConfigurationManager.AppSettings["web.install-url"]; if (!string.IsNullOrEmpty(url)) { var tenant = CoreContext.TenantManager.GetCurrentTenant(); var q = new MailQuery { Email = user.Email, Id = CoreContext.Configuration.GetKey(tenant.TenantId), Alias = tenant.TenantDomain, }; var index = url.IndexOf("?v="); if (0 < index) { q.Version = url.Substring(index + 3); url = url.Substring(0, index); } using (var webClient = new WebClient()) { var values = new NameValueCollection(); values.Add("query", Signature.Create <MailQuery>(q, "4be71393-0c90-41bf-b641-a8d9523fba5c")); webClient.UploadValues(url, values); } } } catch (Exception error) { LogManager.GetLogger("ASC.Web").Error(error); } }
public static void Run() { // ExStart:FilterMessagesFromPOP3Mailbox // Connect and log in to POP3 const string host = "host"; const int port = 110; const string username = "******"; const string password = "******"; Pop3Client client = new Pop3Client(host, port, username, password); // Set conditions, Subject contains "Newsletter", Emails that arrived today MailQueryBuilder builder = new MailQueryBuilder(); builder.Subject.Contains("Newsletter"); builder.InternalDate.On(DateTime.Now); // Build the query and Get list of messages MailQuery query = builder.GetQuery(); Pop3MessageInfoCollection messages = client.ListMessages(query); Console.WriteLine("Pop3: " + messages.Count + " message(s) found."); // ExEnd:FilterMessagesFromPOP3Mailbox }
public void SendInstallInfo(UserInfo user) { try { StudioNotifyService.SendRegData(user); var url = Configuration["web:install-url"]; if (string.IsNullOrEmpty(url)) { return; } var tenant = TenantManager.GetCurrentTenant(); var q = new MailQuery { Email = user.Email, Id = CoreSettings.GetKey(tenant.TenantId), Alias = tenant.GetTenantDomain(CoreSettings), }; var index = url.IndexOf("?v=", StringComparison.InvariantCultureIgnoreCase); if (0 < index) { q.Version = url.Substring(index + 3) + Environment.OSVersion; url = url.Substring(0, index); } using var webClient = new WebClient(); var values = new NameValueCollection { { "query", Signature.Create(q, "4be71393-0c90-41bf-b641-a8d9523fba5c") } }; webClient.UploadValues(url, values); } catch (Exception error) { Log.Error(error); } }
public static void Run() { try { ExchangeClient client = new ExchangeClient("http://ex07sp1/exchange/Administrator", "user", "pwd", "domain"); // ExStart:CaseSensitiveEmailsFilteringUsingExchangeClient // Set conditions ExchangeQueryBuilder builder = new ExchangeQueryBuilder(); builder.Subject.Contains("Newsletter", true); builder.InternalDate.On(DateTime.Now); MailQuery query = builder.GetQuery(); // ExEnd:CaseSensitiveEmailsFilteringUsingExchangeClient ExchangeMessageInfoCollection messages = client.ListMessages(client.MailboxInfo.InboxUri, query, false); Console.WriteLine("Exchange: " + messages.Count + " message(s) found."); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public static void Run() { //ExStart: 1 ImapClient imapClient = new ImapClient(); imapClient.Host = "<HOST>"; imapClient.Port = 993; imapClient.Username = "******"; imapClient.Password = "******"; imapClient.SupportedEncryption = EncryptionProtocols.Tls; imapClient.SecurityOptions = SecurityOptions.SSLImplicit; ImapQueryBuilder imapQueryBuilder = new ImapQueryBuilder(); imapQueryBuilder.HasNoFlags(ImapMessageFlags.IsRead); /* get unread messages. */ MailQuery query = imapQueryBuilder.GetQuery(); imapClient.ReadOnly = true; imapClient.SelectFolder("Inbox"); ImapMessageInfoCollection messageInfoCol = imapClient.ListMessages(query); Console.WriteLine("Initial Unread Count: " + messageInfoCol.Count()); if (messageInfoCol.Count() > 0) { imapClient.FetchMessage(messageInfoCol[0].SequenceNumber); messageInfoCol = imapClient.ListMessages(query); // This count will be equal to the initial count Console.WriteLine("Updated Unread Count: " + messageInfoCol.Count()); } else { Console.WriteLine("No unread messages found"); } //ExEnd: 1 Console.WriteLine("ImapReadOnlyMode executed successfully."); }
public static void Run() { // ExStart:ListMessagesWithMaximumNumberOfMessages // Create an imapclient with host, user and password ImapClient client = new ImapClient("localhost", "user", "password"); // Select the inbox folder and Get the message info collection ImapQueryBuilder builder = new ImapQueryBuilder(); MailQuery query = builder.Or( builder.Or( builder.Or( builder.Or( builder.Subject.Contains(" (1) "), builder.Subject.Contains(" (2) ")), builder.Subject.Contains(" (3) ")), builder.Subject.Contains(" (4) ")), builder.Subject.Contains(" (5) ")); ImapMessageInfoCollection messageInfoCol4 = client.ListMessages(query, 4); Console.WriteLine((messageInfoCol4.Count == 4) ? "Success" : "Failure"); // ExEnd:ListMessagesWithMaximumNumberOfMessages }
public void Setup() { mockHttpContextAccessor = new Mock <IHttpContextAccessor>(); mockHttpContextAccessor .Setup(x => x.HttpContext) .Returns(new DefaultHttpContext()); var options = new DbContextOptionsBuilder <MailyContext>() .UseInMemoryDatabase("Maily") .Options; context = new MailyContext(options); context.Database.EnsureDeleted(); tokenizer = new Tokenizer(context, mockHttpContextAccessor.Object, new Hasher()); mockHttpContextAccessor.Object.HttpContext.Request.Headers["Authorization"] = "sampletoken"; query = new MailQuery(context, tokenizer); var user = context.Users.Add(new User() { Token = "sampletoken" }).Entity; context.Mails.Add(new Mail() { User = user, Value = "*****@*****.**" }); context.Mails.Add(new Mail() { User = user, Value = "*****@*****.**" }); context.SaveChanges(); }
public static void Run() { try { // Create instance of ExchangeClient class by giving credentials ExchangeClient client = new ExchangeClient("http://ex07sp1/exchange/Administrator", "user", "pwd", "domain"); MailQueryBuilder builder = new MailQueryBuilder(); // ExStart:CombineQueriesWithAND // Emails from specific host, get all emails that arrived before today and all emails that arrived since 7 days ago builder.From.Contains("SpecificHost.com"); builder.InternalDate.Before(DateTime.Now); builder.InternalDate.Since(DateTime.Now.AddDays(-7)); // ExEnd:CombineQueriesWithAND MailQuery query = builder.GetQuery(); ExchangeMessageInfoCollection messages = client.ListMessages(client.MailboxInfo.InboxUri, query, false); Console.WriteLine("Exchange: " + messages.Count + " message(s) found."); builder = new MailQueryBuilder(); // ExStart:CombiningQueriesWithOR // Specify OR condition builder.Or(builder.Subject.Contains("test"), builder.From.Contains("*****@*****.**")); // ExEnd:CombiningQueriesWithOR // Build the query and Get list of messages query = builder.GetQuery(); messages = client.ListMessages(client.MailboxInfo.InboxUri, query, false); Console.WriteLine("Exchange: " + messages.Count + " message(s) found."); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public static void Run() { // Connect and log in to POP3 const string host = "host"; const int port = 110; const string username = "******"; const string password = "******"; Pop3Client client = new Pop3Client(host, port, username, password); try { // ExStart:ApplyCaseSensitiveFilters // IgnoreCase is True MailQueryBuilder builder1 = new MailQueryBuilder(); builder1.From.Contains("tesT", true); MailQuery query1 = builder1.GetQuery(); Pop3MessageInfoCollection messageInfoCol1 = client.ListMessages(query1); // ExEnd:ApplyCaseSensitiveFilters } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public static void Run() { // Connect and log in to IMAP const string host = "host"; const int port = 143; const string username = "******"; const string password = "******"; ImapClient client = new ImapClient(host, port, username, password); try { client.SelectFolder("Inbox"); // ExStart:CaseSensitiveEmailsFiltering // Set conditions, Subject contains "Newsletter", Emails that arrived today ImapQueryBuilder builder = new ImapQueryBuilder(); builder.Subject.Contains("Newsletter", true); builder.InternalDate.On(DateTime.Now); MailQuery query = builder.GetQuery(); // ExEnd:CaseSensitiveEmailsFiltering // Get list of messages ImapMessageInfoCollection messages = client.ListMessages(query); foreach (ImapMessageInfo info in messages) { Console.WriteLine("Message Id: " + info.MessageId); } // Disconnect from IMAP client.Dispose(); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public static void Run() { // Connect and log in to POP3 const string host = "host"; const int port = 143; const string username = "******"; const string password = "******"; ImapClient client = new ImapClient(host, port, username, password); try { // ExStart:GetEmailsWithTodayDate // Emails that arrived today MailQueryBuilder builder = new MailQueryBuilder(); builder.InternalDate.On(DateTime.Now); // ExEnd:GetEmailsWithTodayDate // Build the query and Get list of messages MailQuery query = builder.GetQuery(); ImapMessageInfoCollection messages = client.ListMessages(query); Console.WriteLine("Imap: " + messages.Count + " message(s) found."); builder = new MailQueryBuilder(); // ExStart:GetEmailsOverDateRange // Emails that arrived in last 7 days builder.InternalDate.Before(DateTime.Now); builder.InternalDate.Since(DateTime.Now.AddDays(-7)); // ExEnd:GetEmailsOverDateRange // Build the query and Get list of messages query = builder.GetQuery(); messages = client.ListMessages(query); Console.WriteLine("Imap: " + messages.Count + " message(s) found."); builder = new MailQueryBuilder(); // ExStart:GetSpecificSenderEmails // Get emails from specific sender builder.From.Contains("[email protected]"); // ExEnd:GetSpecificSenderEmails // Build the query and Get list of messages query = builder.GetQuery(); messages = client.ListMessages(query); Console.WriteLine("Imap: " + messages.Count + " message(s) found."); builder = new MailQueryBuilder(); // ExStart:GetSpecificDomainEmails // Get emails from specific domain builder.From.Contains("SpecificHost.com"); // ExEnd:GetSpecificDomainEmails // Build the query and Get list of messages query = builder.GetQuery(); messages = client.ListMessages(query); Console.WriteLine("Imap: " + messages.Count + " message(s) found."); builder = new MailQueryBuilder(); // ExStart:GetSpecificRecipientEmails // Get emails sent to specific recipient builder.To.Contains("recipient"); // ExEnd:GetSpecificRecipientEmails //ExStart: GetMessagesWithCustomFlags ImapQueryBuilder queryBuilder = new ImapQueryBuilder(); queryBuilder.HasFlags(ImapMessageFlags.Keyword("custom1")); queryBuilder.HasNoFlags(ImapMessageFlags.Keyword("custom2")); //ExEnd: GetMessagesWithCustomFlags // Build the query and Get list of messages query = builder.GetQuery(); messages = client.ListMessages(query); Console.WriteLine("Imap: " + messages.Count + " message(s) found."); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public static void Run() { try { // Create instance of ExchangeClient class by giving credentials ExchangeClient client = new ExchangeClient("http://ex07sp1/exchange/Administrator", "user", "pwd", "domain"); // ExStart:GetEmailsWithTodayDate // Emails that arrived today MailQueryBuilder builder = new MailQueryBuilder(); builder.InternalDate.On(DateTime.Now); // ExEnd:GetEmailsWithTodayDate // Build the query and Get list of messages MailQuery query = builder.GetQuery(); ExchangeMessageInfoCollection messages = client.ListMessages(client.MailboxInfo.InboxUri, query, false); Console.WriteLine("Exchange: " + messages.Count + " message(s) found."); builder = new MailQueryBuilder(); // ExStart:GetEmailsOverDateRange // Emails that arrived in last 7 days builder.InternalDate.Before(DateTime.Now); builder.InternalDate.Since(DateTime.Now.AddDays(-7)); // ExEnd:GetEmailsOverDateRange // Build the query and Get list of messages query = builder.GetQuery(); messages = client.ListMessages(client.MailboxInfo.InboxUri, query, false); Console.WriteLine("Exchange: " + messages.Count + " message(s) found."); builder = new MailQueryBuilder(); // ExStart:GetSpecificSenderEmails // Get emails from specific sender builder.From.Contains("[email protected]"); // ExEnd:GetSpecificSenderEmails // Build the query and Get list of messages query = builder.GetQuery(); messages = client.ListMessages(client.MailboxInfo.InboxUri, query, false); Console.WriteLine("Exchange: " + messages.Count + " message(s) found."); builder = new MailQueryBuilder(); // ExStart:GetSpecificDomainEmails // Get emails from specific domain builder.From.Contains("SpecificHost.com"); // ExEnd:GetSpecificDomainEmails // Build the query and Get list of messages query = builder.GetQuery(); messages = client.ListMessages(client.MailboxInfo.InboxUri, query, false); Console.WriteLine("Exchange: " + messages.Count + " message(s) found."); builder = new MailQueryBuilder(); // ExStart:GetSpecificRecipientEmails // Get emails sent to specific recipient builder.To.Contains("recipient"); // ExEnd:GetSpecificRecipientEmails // Build the query and Get list of messages query = builder.GetQuery(); messages = client.ListMessages(client.MailboxInfo.InboxUri, query, false); Console.WriteLine("Exchange: " + messages.Count + " message(s) found."); // ExStart:GetSpecificMessageIdEmail // Get email with specific MessageId ExchangeQueryBuilder builder1 = new ExchangeQueryBuilder(); builder1.MessageId.Equals("MessageID"); // ExEnd:GetSpecificMessageIdEmail // Build the query and Get list of messages query = builder1.GetQuery(); messages = client.ListMessages(client.MailboxInfo.InboxUri, query, false); Console.WriteLine("Exchange: " + messages.Count + " message(s) found."); // ExStart:GetMailDeliveryNotifications // Get Mail Delivery Notifications builder1 = new ExchangeQueryBuilder(); builder1.ContentClass.Equals(ContentClassType.MDN.ToString()); // ExEnd:GetMailDeliveryNotifications // Build the query and Get list of messages query = builder1.GetQuery(); messages = client.ListMessages(client.MailboxInfo.InboxUri, query, false); Console.WriteLine("Exchange: " + messages.Count + " message(s) found."); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
private int DownloadEmail(Imap imap, MailboxProfile profile, String storagePath) { int count = 0; // Build the MailQuery var query = new MailQuery(String.IsNullOrEmpty(profile.ImapQuery) ? "('Deleted' = 'False')" : String.Format("({0}&('Deleted' = 'False'))", profile.ImapQuery)); // Get all messages matching to the query var infos = imap.ListMessages(query); // If there are any messages to process, then process them if (infos.Any()) { ConfigLogger.Instance.LogInfo("ImapCollector", String.Format("Downloading {0} message{1} from {2}.", infos.Count, infos.Count == 1 ? "" : "s", profile.Description)); // Download each message foreach (var info in infos) { if (!timer.Enabled) { break; } // Just check to ensure its valid if (info.Deleted || String.IsNullOrWhiteSpace(info.UniqueId)) { continue; } // Track the start time for debug purposes var start = DateTime.Now; MailMessage message = null; try { // Download the message message = imap.FetchMessage(info.UniqueId); // Calculate the time taken to fetch the message var fetchTime = DateTime.Now.Subtract(start); // Process the message (So long as the fetch succeeded) if (message != null) { // Setup the data context using (var ctx = new EmailImportDataContext()) { long emailID = 0; // Truncate the subject to avoid data commit errors message.Subject = Truncate(message.Subject, 500); // Check for duplicate if (IsDuplicate(ctx, profile.MailboxGUID, message, ref emailID)) { // Log the duplicate error ConfigLogger.Instance.LogWarning("ImapCollector", String.Format("Message already downloaded, moved to duplicate folder (existing EmailID = {0}).", emailID)); // Move the message to the duplicate sub folder imap.MoveMessage(info.UniqueId, "Duplicate", true, false); } else { // Create an instance of the email database object var email = new Email(); // Assign properties email.MailboxGUID = profile.MailboxGUID; email.DateSent = message.DateSent(); email.DateReceived = message.DateReceived(); email.From = message.From.GetAddressOrDisplayName(); email.MessageID = message.MessageId; if (CreditCardHelper.ExistsCCNumber(message.Subject)) { email.Subject = CreditCardHelper.MaskCCNumbers(message.Subject, '#'); } else { email.Subject = message.Subject; } email.Timestamp = DateTime.Now; // Create the dated storage path var path = Path.Combine(storagePath, email.Timestamp.Value.ToString("yyyyMMdd")); FileSystemHelper.CreateDirectory(path); // Insert the new record ctx.Emails.InsertOnSubmit(email); // Submit the email (we need to get the email ID) using (TransactionScope scope = new TransactionScope()) { // Initial submit of changes ctx.SubmitChanges(); // Build the mail message file name email.MessageFilePath = Path.Combine(path, String.Format("{0:00000000}.eml", email.EmailID)); // Save to disk (delete anything that already exists) message.Save(email.MessageFilePath, MessageFormat.Eml); // Get the batch number - THIS SHOULD NEVER HAPPEN IN A MULTI THREAD SCENARIO WITHOUT A LOCK var batchNumber = ctx.BatchNumbers.SingleOrDefault(b => b.Group == profile.Group); // If there is no batchNumber defined yet, create and insert one if (batchNumber == null) { batchNumber = new BatchNumber(); batchNumber.Group = profile.Group; ctx.BatchNumbers.InsertOnSubmit(batchNumber); } // Init to 0 if null if (!batchNumber.Value.HasValue) { batchNumber.Value = 0; } // Set the new batch number to this email email.BatchNumber = String.Format(String.IsNullOrWhiteSpace(profile.BatchNumberFormat) ? "{0:00000000}" : profile.BatchNumberFormat, ++batchNumber.Value); // Final submit of updates ctx.SubmitChanges(); // Finally, commit to the database scope.Complete(); } // Move the email to the archive (if this fails, but the download is complete this // will just result in a duplicate next time round if the deleted flag is not set) imap.MoveMessage(info.UniqueId, "Archive", true, false); // Log message level download stats ConfigLogger.Instance.LogDebug("ImapCollector", String.Format("Message downloaded (EmailID = {0}, Fetch Time = {1}s, Total Time = {2}s).", email.EmailID, (int)fetchTime.TotalSeconds, (int)DateTime.Now.Subtract(start).TotalSeconds)); // Increment the download count count++; } } } } catch (OutOfMemoryException) { throw; } catch (Exception e) { ConfigLogger.Instance.LogError("ImapCollector", e); } finally { if (message != null) { message.Dispose(); } } } } return(count); }
private void HouseKeeping() { ConfigLogger.Instance.LogInfo("ImapCollector", "Performing house keeping tasks..."); // Save the default timeout value var timeout = Imap.Timeout; try { // Set timeout to 5 mins for housekeeping Imap.Timeout = 300000; // Loop through each mailbox defined in the configuration file foreach (var profile in Settings.MailboxProfiles.Values) { // Ignore if no imap host is defined if (String.IsNullOrWhiteSpace(profile.ImapHost)) { continue; } // Determine date to purge from based on retention setting var date = DateTime.Today.AddDays(0 - Math.Abs(profile.ImapRetention)); try { // Create an imap session (auto connect/login/select) using (Imap imap = new Imap(profile)) { // Build the MailQuery var query = new MailQuery(String.IsNullOrEmpty(profile.ImapQuery) ? String.Format("('InternalDate' < '{0:dd-MMM-yyyy}')", date) : String.Format("({0}&('InternalDate' < '{1:dd-MMM-yyyy}'))", profile.ImapQuery, date)); // Select the Archive folder if (imap.SelectFolderIfExists("Archive", true)) { // Find all messages matching the query var infos = imap.ListMessages(query); // Delete all of the messages found foreach (var info in infos) { imap.DeleteMessage(info.UniqueId, false); } ConfigLogger.Instance.LogInfo("ImapCollector", String.Format("Deleted {0} message{1} from {2}.", infos.Count, infos.Count == 1 ? "" : "s", profile.Description)); } // Expunge the deleted messages imap.ExpungeMessages(); } } catch (OutOfMemoryException) { throw; } catch (Exception e) { // Add custom data for logging purposes e.Data.Add("MailboxGUID", profile.MailboxGUID); // Log the warning (not error) ConfigLogger.Instance.LogWarning("ImapCollector", e); } } } catch (OutOfMemoryException) { throw; } catch (Exception e) { // We don't want housekeeping to cause a failure, but we want someone to // know about it so that they can investigate the issue ConfigLogger.Instance.LogWarning("ImapCollector", e); } finally { // Reset the original timeout value Imap.Timeout = timeout; } }
static void Run() { // ExStart:SearchWithPagingSupport ///<summary> /// This example shows how to search for messages using ImapClient of the API with paging support /// Introduced in Aspose.Email for .NET 6.4.0 ///</summary> using (ImapClient client = new ImapClient("host.domain.com", 84, "username", "password")) { try { // Append some test messages int messagesNum = 12; int itemsPerPage = 5; MailMessage message = null; for (int i = 0; i < messagesNum; i++) { message = new MailMessage( "*****@*****.**", "*****@*****.**", "EMAILNET-35128 - " + Guid.NewGuid(), "111111111111111"); client.AppendMessage(ImapFolderInfo.InBox, message); } string body = "2222222222222"; for (int i = 0; i < messagesNum; i++) { message = new MailMessage( "*****@*****.**", "*****@*****.**", "EMAILNET-35128 - " + Guid.NewGuid(), body); client.AppendMessage(ImapFolderInfo.InBox, message); } ImapQueryBuilder iqb = new ImapQueryBuilder(); iqb.Body.Contains(body); MailQuery query = iqb.GetQuery(); client.SelectFolder(ImapFolderInfo.InBox); ImapMessageInfoCollection totalMessageInfoCol = client.ListMessages(query); Console.WriteLine(totalMessageInfoCol.Count); ////////////////////////////////////////////////////// List <ImapPageInfo> pages = new List <ImapPageInfo>(); ImapPageInfo pageInfo = client.ListMessagesByPage(ImapFolderInfo.InBox, query, itemsPerPage); pages.Add(pageInfo); while (!pageInfo.LastPage) { pageInfo = client.ListMessagesByPage(ImapFolderInfo.InBox, query, pageInfo.NextPage); pages.Add(pageInfo); } int retrievedItems = 0; foreach (ImapPageInfo folderCol in pages) { retrievedItems += folderCol.Items.Count; } } finally { } } // ExEnd: SearchWithPagingSupport }
public static void Run() { // Connect to EWS const string mailboxUri = "https://outlook.office365.com/ews/exchange.asmx"; const string username = "******"; const string password = "******"; const string domain = "domain"; try { IEWSClient client = EWSClient.GetEWSClient(mailboxUri, username, password, domain); // ExStart:GetEmailsWithTodayDate // Emails that arrived today MailQueryBuilder builder = new MailQueryBuilder(); builder.InternalDate.On(DateTime.Now); // ExEnd:GetEmailsWithTodayDate // Build the query and Get list of messages MailQuery query = builder.GetQuery(); ExchangeMessageInfoCollection messages = client.ListMessages(client.MailboxInfo.InboxUri, query); Console.WriteLine("EWS: " + messages.Count + " message(s) found."); builder = new MailQueryBuilder(); // ExStart:GetEmailsOverDateRange // Emails that arrived in last 7 days builder.InternalDate.Before(DateTime.Now); builder.InternalDate.Since(DateTime.Now.AddDays(-7)); // ExEnd:GetEmailsOverDateRange // Build the query and Get list of messages query = builder.GetQuery(); messages = client.ListMessages(client.MailboxInfo.InboxUri, query); Console.WriteLine("EWS: " + messages.Count + " message(s) found."); builder = new MailQueryBuilder(); // ExStart:GetSpecificSenderEmails // Get emails from specific sender builder.From.Contains("[email protected]"); // ExEnd:GetSpecificSenderEmails // Build the query and Get list of messages query = builder.GetQuery(); messages = client.ListMessages(client.MailboxInfo.InboxUri, query); Console.WriteLine("EWS: " + messages.Count + " message(s) found."); builder = new MailQueryBuilder(); // ExStart:GetSpecificDomainEmails // Get emails from specific domain builder.From.Contains("SpecificHost.com"); // ExEnd:GetSpecificDomainEmails // Build the query and Get list of messages query = builder.GetQuery(); messages = client.ListMessages(client.MailboxInfo.InboxUri, query); Console.WriteLine("EWS: " + messages.Count + " message(s) found."); builder = new MailQueryBuilder(); // ExStart:GetSpecificRecipientEmails // Get emails sent to specific recipient builder.To.Contains("recipient"); // ExEnd:GetSpecificRecipientEmails // Build the query and Get list of messages query = builder.GetQuery(); messages = client.ListMessages(client.MailboxInfo.InboxUri, query); Console.WriteLine("EWS: " + messages.Count + " message(s) found."); // ExStart:GetSpecificMessageIdEmail // Get email with specific MessageId ExchangeQueryBuilder builder1 = new ExchangeQueryBuilder(); builder1.MessageId.Equals("MessageID"); // ExEnd:GetSpecificMessageIdEmail // Build the query and Get list of messages query = builder1.GetQuery(); messages = client.ListMessages(client.MailboxInfo.InboxUri, query); Console.WriteLine("EWS: " + messages.Count + " message(s) found."); // ExStart:GetMailDeliveryNotifications // Get Mail Delivery Notifications builder1 = new ExchangeQueryBuilder(); builder1.ContentClass.Equals(ContentClassType.MDN.ToString()); // ExEnd:GetMailDeliveryNotifications //ExStart: FilterMessagesByMessageSize builder1 = new ExchangeQueryBuilder(); builder1.ItemSize.Greater(80000); //ExEnd: FilterMessagesByMessageSize // Build the query and Get list of messages query = builder1.GetQuery(); messages = client.ListMessages(client.MailboxInfo.InboxUri, query); Console.WriteLine("EWS: " + messages.Count + " message(s) found."); } catch (Exception ex) { Console.WriteLine(ex.Message); } }