public void CheckForEmailResponse() { try { StringBuilder logText = new StringBuilder(); ExecutionServices.SystemTrace.LogDebug("Retrieving Email Responses."); // Look through all the received mail to find one with "ePrint" in subject line foreach (EmailMessage message in _emailController.RetrieveMessages(EmailFolder.Inbox)) { if (message.Subject.Contains("ePrint", StringComparison.InvariantCultureIgnoreCase)) { logText.Clear(); LogHeaders(message, ref logText); if (HasPrinted(message, ref logText)) { // The document has been printed. _emailController.Delete(message); } else if (IsProcessing(message, ref logText)) { // The document was received _emailController.Delete(message); } else if (IsPartiallyReady(message, ref logText)) { // "Partially Ready" is an error condition. _emailController.Delete(message); } else // Unrecognized text in the body of the message. { logText.Append(Environment.NewLine); logText.AppendLine("Print job failed."); logText.Append(message.Subject).Append(" "); logText.Append(CleanUpHtml(message.Body)); } } else // Unrecognized email message. { logText.AppendLine("Non-ePrint related email received: "); logText.Append(message.Subject); logText.Append("BODY: ").Append(CleanUpHtml(message.Body)); } logText.AppendLine(); OnEmailResponseReceived(logText.ToString()); } } catch (Exception ex) { CleanEmailFolders(); ExecutionServices.SystemTrace.LogError(ex); } }
/// <summary> /// Processes existing files in the destination being monitored. /// </summary> private void ProcessExisting() { Console.WriteLine("Processing existing emails for '{0}'.".FormatWith(_emailAddress)); Collection <EmailMessage> allmessages = null; Collection <EmailMessage> processedMessages = new Collection <EmailMessage>(); try { allmessages = _controller.RetrieveMessages(EmailFolder.Inbox); } catch (EmailServerException ex) { //Something's up with the Email server. TraceFactory.Logger.Error(ex); return; } // Process each email, and note which ones are successful foreach (EmailMessage message in allmessages) { bool success = ProcessMessage(message); if (success) { processedMessages.Add(message); } } // Remove all the successful messages from the server _controller.Delete(processedMessages); }
/// <summary> /// Process the specified email message. /// </summary> /// <param name="emailMessage"></param> /// <param name="controller"></param> /// <param name="user"></param> /// <returns></returns> public bool ProcessMessage(EmailMessage emailMessage, IEmailController controller, string user) { TraceFactory.Logger.Debug("Cleaning up email message From:{0} To:{1}".FormatWith(emailMessage.FromAddress.Address, user)); //TODO: Add Logger support controller.Delete(emailMessage); //Clean up the email return(true); }