예제 #1
0
파일: Program.cs 프로젝트: Sidd710/tempRepo
        private static bool ProcessEmailAttachments(EmailMessage email, string mailboxMonitorAddress, FolderId moveMailFolderId, long savedMySQLMessageId)
        {
            if (email.Attachments.Count > 0)
            {
                foreach (var emailAttachment in email.Attachments.Where(a => a.Name.ToLower().EndsWith("lic")))
                {
                    if (emailAttachment is FileAttachment)
                    {
                        var emailFileAttachment = emailAttachment as FileAttachment;
                        emailFileAttachment.Load();
                        var utfDecodedContent = Encoding.UTF8.GetString(emailFileAttachment.Content);
                        if (utfDecodedContent.Contains("---"))
                        {
                            Atum.DAL.Managers.LoggingManager.WriteToLog("Processing Mail", "From", email.Sender.Address);
                            MsSqlManager.SaveLogging(new Atum.DAL.Logging.LoggingInfo(DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss"), "Processing Mail", "From", email.Sender.Address));
                            Atum.DAL.Managers.LoggingManager.WriteToLog("Processing Mail", "Start of license block", "Found");
                            MsSqlManager.SaveLogging(new Atum.DAL.Logging.LoggingInfo(DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss"), "Processing Mail", "Start of license block", "Found"));

                            var activatedLicenseFile = Atum.DAL.Licenses.OnlineCatalogLicenses.FromLicenseStream(utfDecodedContent);

                            if (activatedLicenseFile.Count == 1)
                            {
                                LoggingManager.WriteToLog("Processing Mail", "License Object", "Processed");
                                MsSqlManager.SaveLogging(new Atum.DAL.Logging.LoggingInfo(DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss"), "Processing Mail", "License Object", "Processed"));


                                //debug (use forwarding to monitor registration process)
                                email.Forward(new MessageBody(BodyType.HTML, "Done?"), new EmailAddress[1] {
                                    mailboxMonitorAddress
                                });
                                LoggingManager.WriteToLog("Processing Mail", "Forwarding with body", "Done");
                                MsSqlManager.SaveLogging(new Atum.DAL.Logging.LoggingInfo(DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss"), "Processing Mail", "Forwarding with body", "Done"));

                                //prepare
                                var emailReply = new StringBuilder();
                                if (email.Body.BodyType == BodyType.HTML)
                                {
                                    emailReply.AppendLine("Dear customer, <br/><br/>Thank you for requesting an activation code.<br/><br/>");
                                }
                                else
                                {
                                    emailReply.AppendLine("Dear customer,");
                                    emailReply.AppendLine("Thank you for requesting an activation code.");
                                    emailReply.AppendLine();
                                    emailReply.AppendLine();
                                }

                                //activate license
                                activatedLicenseFile[0].Activated      = true;
                                activatedLicenseFile[0].ExpirationDate = DateTime.Now.AddYears(1);
                                activatedLicenseFile[0].ActivationDate = DateTime.Now;
                                activatedLicenseFile[0].LicenseType    = Atum.DAL.Licenses.AvailableLicense.TypeOfLicense.StudioStandard;

                                var emailFileAttachmentName          = emailFileAttachment.Name;
                                var emailFileAttachmentNameActivated = emailFileAttachment.Name.Substring(0, emailFileAttachment.Name.LastIndexOf("."));
                                emailFileAttachmentNameActivated += "-activated.lic";
                                var replyMessage = email.CreateReply(true);
                                replyMessage.BodyPrefix = emailReply.ToString();
                                EmailMessage replyEmailMessage = replyMessage.Save();
                                replyEmailMessage.Attachments.AddFileAttachment(emailFileAttachmentNameActivated, Encoding.UTF8.GetBytes(activatedLicenseFile.ToLicenseRequest()));
                                replyEmailMessage.Update(ConflictResolutionMode.AutoResolve);
                                replyEmailMessage.Send();

                                LoggingManager.WriteToLog("Processing Mail", "Forwarded with body", "Done");
                                MsSqlManager.SaveLogging(new Atum.DAL.Logging.LoggingInfo(DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss"), "Processing Mail", "Forwarding with body", "Done"));

                                //mark as read
                                email.IsRead = true;
                                email.Update(ConflictResolutionMode.AlwaysOverwrite);
                                LoggingManager.WriteToLog("Processing Mail", "Email marked as", "Unread");
                                MsSqlManager.SaveLogging(new Atum.DAL.Logging.LoggingInfo(DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss"), "Processing Mail", "Email marked as", "Unread"));

                                //save to database
                                MsSqlManager.UpdateRAWMessageWithActivationCode(savedMySQLMessageId, activatedLicenseFile);

                                //move mail to processed folder
                                email.Move(moveMailFolderId);
                                LoggingManager.WriteToLog("Processing Mail", "Email moved to", "Processed");
                                MsSqlManager.SaveLogging(new Atum.DAL.Logging.LoggingInfo(DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss"), "Processing Mail", "Email moved to", "Processed"));

                                //save to path
                                var atumLicenseFile = new HenkelEmailLicenseRequest(email.Sender.Address, email.DateTimeReceived, activatedLicenseFile[0]);
                                atumLicenseFile.Save();

                                LoggingManager.WriteToLog("Processing Mail", "Email moved to", "Processed");
                                MsSqlManager.SaveLogging(new Atum.DAL.Logging.LoggingInfo(DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss"), "Processing Mail", "Email moved to", "Processed"));
                            }
                        }
                    }
                }
                return(true);
            }
            return(false);
        }
예제 #2
0
파일: Program.cs 프로젝트: Sidd710/tempRepo
        private static bool ProcessEmailBodyText(EmailMessage email, string mailboxMonitorAddress, FolderId moveMailFolderId, long savedMySQLMessageId)
        {
            if (email.Body.Text.Contains("---StartOfLicenseCode---"))
            {
                Atum.DAL.Managers.LoggingManager.WriteToLog("Processing Mail", "From", email.Sender.Address);
                Atum.DAL.Managers.LoggingManager.WriteToLog("Processing Mail", "Start of license block", "Found");

                var emailBodyAsHtml = email.Body.Text;
                var emailBodyText   = emailBodyAsHtml.Substring(emailBodyAsHtml.IndexOf("---StartOfLicenseCode---"));
                var endLicenseTag   = "---EndofLicenseCode---";
                emailBodyText = emailBodyText.Substring(0, emailBodyText.IndexOf(endLicenseTag) + endLicenseTag.Length);
                emailBodyText = Regex.Replace(emailBodyText, "<.*?>", string.Empty); //strip HTML tags
                emailBodyText = WebUtility.HtmlDecode(emailBodyText);                //convert html encoding to text encoding

                var licenseFile = Atum.DAL.Licenses.OnlineCatalogLicenses.FromLicenseStream(emailBodyText);

                if (licenseFile.Count == 1)
                {
                    LoggingManager.WriteToLog("Processing Mail", "License Object", "Processed");


                    //debug (use forwarding to monitor registration process)
                    email.Forward(new MessageBody(BodyType.HTML, "Done?"), new EmailAddress[1] {
                        mailboxMonitorAddress
                    });
                    MsSqlManager.SaveLogging(new Atum.DAL.Logging.LoggingInfo(DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss"), "Processing Mail", "Forwarding with body", "Done"));
                    LoggingManager.WriteToLog("Processing Mail", "Forwarding with body", "Done");

                    //preprare
                    var emailReply = new StringBuilder();
                    if (email.Body.BodyType == BodyType.HTML)
                    {
                        emailReply.AppendLine("Dear customer, <br/><br/>Thank you for requesting an activation code.<br/><br/>");
                    }
                    else
                    {
                        emailReply.AppendLine("Dear customer,");
                        emailReply.AppendLine("Thank you for requesting an activation code.");
                        emailReply.AppendLine();
                        emailReply.AppendLine();
                    }

                    //activate license
                    licenseFile[0].Activated      = true;
                    licenseFile[0].ExpirationDate = DateTime.Now.AddYears(1);
                    licenseFile[0].ActivationDate = DateTime.Now;
                    licenseFile[0].LicenseType    = Atum.DAL.Licenses.AvailableLicense.TypeOfLicense.StudioStandard;

                    emailReply.AppendLine(licenseFile.ToLicenseRequest());
                    email.Reply(new MessageBody(email.Body.BodyType, emailReply.ToString()), true);

                    MsSqlManager.SaveLogging(new Atum.DAL.Logging.LoggingInfo(DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss"), "Processing Mail", "Forwarding with body", "Done"));
                    LoggingManager.WriteToLog("Processing Mail", "Forwarded with body", "Done");

                    //mark as read
                    email.IsRead = true;
                    email.Update(ConflictResolutionMode.AlwaysOverwrite);
                    LoggingManager.WriteToLog("Processing Mail", "Email marked as", "Unread");
                    MsSqlManager.SaveLogging(new Atum.DAL.Logging.LoggingInfo(DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss"), "Processing Mail", "Email marked as", "Unread"));

                    //save to database
                    MsSqlManager.UpdateRAWMessageWithActivationCode(savedMySQLMessageId, licenseFile);

                    //move mail to processed folder
                    email.Move(moveMailFolderId);
                    LoggingManager.WriteToLog("Processing Mail", "Email moved to", "Processed");
                    MsSqlManager.SaveLogging(new Atum.DAL.Logging.LoggingInfo(DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss"), "Processing Mail", "Email moved to", "Processed"));

                    //save to path
                    var atumLicenseFile = new HenkelEmailLicenseRequest(email.Sender.Address, email.DateTimeReceived, licenseFile[0]);
                    atumLicenseFile.Save();

                    LoggingManager.WriteToLog("Processing Mail", "Email moved to", "Processed");
                    MsSqlManager.SaveLogging(new Atum.DAL.Logging.LoggingInfo(DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss"), "Processing Mail", "Email moved to", "Processed"));
                }
                return(true);
            }
            return(false);
        }