private void InstallNotificationDependencies(IServiceCollection services)
        {
            services.AddTransient <EmailBuilder <UserActivationEmailModel>, UserActivationEmailBuilder>();
            services.AddTransient <EmailBuilder <ResetPasswordEmailModel>, ForgotPasswordEmailBuilder>();

            services.AddSingleton(sp =>
            {
                var emailServerConnectionSettings = new EmailServerConnectionSettings
                {
                    ApiKey             = Configuration["SendGridApiKey"],
                    SenderEmailAddress = Configuration["SendGridSenderEmail"],
                    SenderName         = Configuration["SendGridSenderName"]
                };

                return(emailServerConnectionSettings);
            });

            services.AddTransient <INotificationService, NotificationService>((serviceProvider) =>
            {
                var emailConnectionSettings = serviceProvider.GetRequiredService <EmailServerConnectionSettings>();
                var emailFactory            = new EmailClientFactory();
                var sendGridClient          = emailFactory.CreateClient(emailConnectionSettings.ApiKey);
                var emailBuilderRetriever   = new EmailBuilderRetriever(serviceProvider, emailConnectionSettings);
                return(new NotificationService(sendGridClient, emailBuilderRetriever));
            });

            services.Configure <RazorViewEngineOptions>(options =>
            {
                options.FileProviders.Clear();
                options.FileProviders.Add(new PhysicalFileProvider(Directory.GetCurrentDirectory()));
            });

            services.AddTransient <IRazorViewToStringRenderer, RazorViewToStringRenderer>();
        }
Exemple #2
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.InstallIdentityDependencies(Configuration);

            services.AddSwaggerGen(options =>
            {
                options.SwaggerDoc("v1", new Info {
                    Title = "User Management API", Version = "v1"
                });
            });

            services.AddSingleton(sp =>
            {
                var emailServerConnectionSettings = new EmailServerConnectionSettings
                {
                    ApiKey             = Configuration["SendGridApiKey"],
                    SenderEmailAddress = Configuration["SendGridSenderEmail"],
                    SenderName         = Configuration["SendGridSenderName"]
                };

                return(emailServerConnectionSettings);
            });

            //services.AddTransient<IEmailHtmlContentBuilder, EmailHtmlContentBuilder>();
            services.AddTransient <EmailBuilder <UserActivationEmailModel>, UserActivationEmailBuilder>();
            services.AddTransient <EmailBuilder <ResetPasswordEmailModel>, ForgotPasswordEmailBuilder>();

            services.AddTransient <INotificationService, NotificationService>((serviceProvider) =>
            {
                var emailConnectionSettings = serviceProvider.GetRequiredService <EmailServerConnectionSettings>();
                var emailFactory            = new EmailClientFactory();
                var sendGridClient          = emailFactory.CreateClient(emailConnectionSettings.ApiKey);
                var emailBuilderRetriever   = new EmailBuilderRetriever(serviceProvider, emailConnectionSettings);
                return(new NotificationService(sendGridClient, emailBuilderRetriever));
            });
            services.AddMvc();


            var assembly             = typeof(INotificationService).GetTypeInfo().Assembly;
            var embeddedFileProvider = new EmbeddedFileProvider(
                assembly,
                "ViewComponentLibrary"
                );

            services.Configure <RazorViewEngineOptions>(options =>
            {
                options.FileProviders.Clear();
                options.FileProviders.Add(new PhysicalFileProvider(Directory.GetCurrentDirectory()));
            });

            services.AddTransient <IRazorViewToStringRenderer, RazorViewToStringRenderer>();
        }
Exemple #3
0
        protected void Recieve_Email_Click_Pop_IMAP(object sender, EventArgs e)
        {
            try
            {
                // for Gmail
                IEmailClient imapClient = EmailClientFactory.GetClient(EmailClientEnum.POP3);
                imapClient.Connect("imap.gmail.com", "*****@*****.**", "test.stanev2801", 993, true);
                imapClient.SetCurrentFolder("INBOX");

                // I assume that 5 is the last "ID" readed by my client.
                // If I want to read all messages i use "ImapClient.LoadMessages();"
                // to take min of UI count and messages.Count
                int cMail = int.Parse(CountMail.Text);
                // int msgCount = imapClient.Messages.Count;
                //  int minCount = Math.Min(cMail, msgCount);
                imapClient.LoadRecentMessages(cMail);


                DataTable dt = InitializeDataTable();
                // To read all my messages loaded:
                int count = 0;
                //for (int i = 0; i < ImapClient.Messages.Count; i++)
                for (int i = 0; i < cMail; i++)
                {
                    IEmail msm = (IEmail)imapClient.Messages[i];
                    // Load all infos include attachments
                    msm.LoadInfos();
                    count++;
                    dt.Rows.Add(new object[] { count,
                                               msm.Date.ToString(),
                                               msm.From[0],
                                               msm.Subject,
                                               "",
                                               msm.TextBody });
                    //Console.WriteLine(msm.Date.ToString() + " - " + msm.From[0] + " - " +
                    //                  msm.Subject + " - " + msm.TextBody + msm.Attachments.Count);
                }

                dataGrid.DataSource = dt;
                dataGrid.DataBind();
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterClientScriptBlock(
                    this,
                    typeof(Page),
                    "TScript",
                    "alert('There is an error when reading email!')",
                    true);
            }
        }
Exemple #4
0
        private void EmailClientTestButton_OnClick(object sender, RoutedEventArgs e)
        {
            var emailClientFactory = new EmailClientFactory();
            var emailClient        = emailClientFactory.CreateEmailClient();

            if (emailClient == null)
            {
                string caption = TranslationHelper.Instance.TranslatorInstance.GetTranslation("EmailClientActionSettings", "CheckMailClient", "Check e-mail client");
                string message = TranslationHelper.Instance.TranslatorInstance.GetTranslation("EmailClientActionSettings", "NoMapiClientFound",
                                                                                              "Could not find MAPI client (e.g. Thunderbird or Outlook).");
                MessageWindow.ShowTopMost(message, caption, MessageWindowButtons.OK, MessageWindowIcon.Warning);
                return;
            }

            var eMail = new Email();

            eMail.To.Add(EmailClientSettings.Recipients);
            eMail.Subject = EmailClientSettings.Subject;
            eMail.Body    = EmailClientSettings.Content + MailSignatureHelper.ComposeMailSignature(EmailClientSettings);

            try
            {
                string tempFolder    = Path.GetTempPath();
                string tmpTestFolder = Path.Combine(tempFolder, "PDFCreator-Test\\SendSmtpTestmail");
                Directory.CreateDirectory(tmpTestFolder);
                string tmpFile = Path.Combine(tmpTestFolder, "PDFCreator Mail Client Test.pdf");
                File.WriteAllText(tmpFile, "");
                eMail.Attachments.Add(new Attachment(tmpFile));

                emailClient.ShowEmailClient(eMail);
            }
            catch (Exception ex)
            {
                _logger.Warn(ex, "Exception while creating mail");
            }
        }
        public static bool CheckEmailClientInstalled()
        {
            var emailClientFactory = new EmailClientFactory();

            return(emailClientFactory.CreateEmailClient() != null);
        }
Exemple #6
0
        private void sendEmailConfirmation(IKeyedDataStore parameters)
        {
#if _WTF
            // Create Confirmation from Template.
            Uri responseURI;
            response = BookSelection.WebApp.Helper.PostRequest(
                out responseURI,
                context.Request,
                "CheckoutEmailTemplate.cshtml?SendEmail=false");
#else
            string emailBody = null;

            MemoryStream stream = new MemoryStream(2048);

            TextWriter writer = new StreamWriter(stream);

            Action <string, string> emitField = ((name, id) =>
            {
                writer.WriteLine("         <label class='{0}' style='{1}'>",
                                 "oe-label", "display:block;margin-top: 5pt;margin-bottom:0pt");
                writer.Write(name.CamelCaseToDelimitted());
                writer.WriteLine("         </label>");                  //                </label>

                writer.WriteLine("         <input type='{0}' name='{1}' id='{2}' style='{3}' value='{4}' readonly />",
                                 "text", name, id, "width:80%;color:Blue", parameters[name]);
            });

            writer.WriteLine("<html>");
            writer.WriteLine("<head>");
            writer.Write("<title>");
            writer.Write("Black River Systems, Inc - Library Checkout");
            writer.Write("</title>");
            writer.WriteLine("</head>");

            writer.WriteLine("   <body>");
            writer.WriteLine("      <div id='oe-mail'>");

            writer.WriteLine("         <h2>{0}</h2>", "Checkout Confirmation");

            writer.WriteLine("         <fieldset style='{0}'>",
                             "margin-left: 27px; margin-right: 27px;");

            emitField("SubscriberName", "name");
            emitField("ISBN", "isbn");
            emitField("Title", "title");
            emitField("CheckoutDate", "checkout-date");

            writer.WriteLine("        </fieldset>");
            writer.WriteLine("      </div>");
            writer.WriteLine("   </body>");
            writer.WriteLine("</html>");

            writer.Flush();

            emailBody = stream.ContentsToString();
#endif
            // Send confirmation Email
            string       emailConnection = GlobalCache.GetResolvedString("EmailService");
            Encryption   encryptor       = new Encryption();
            IEmailClient client          = EmailClientFactory.Create(encryptor.Decrypt(emailConnection));
            client.Send("*****@*****.**",
                        Request.Form.Get("Email"),
                        "Library Checkout Confirmation",
                        emailBody);
        }
Exemple #7
0
        static void Main(string[] args)
        {
            IEmailClient ImapClient = EmailClientFactory.GetClient(EmailClientEnum.IMAP);

            ImapClient.Connect("imap.gmail.com", "*****@*****.**", "abeo1234", 993, true);
            ImapClient.SetCurrentFolder("INBOX");
            // I assume that 5 is the last "ID" readed by my client.
            // If I want to read all messages i use "ImapClient.LoadMessages();"
            //ImapClient.LoadRecentMessages(5);
            ImapClient.LoadMessages();
            // To read all my messages loaded:
            for (int i = 0; i < ImapClient.Messages.Count; i++)
            {
                IEmail msm = (IEmail)ImapClient.Messages[i];
                // Load all infos include attachments
                msm.LoadInfos();
                Console.WriteLine(msm.Date.ToString() + " - " + msm.From[0] + " - " +
                                  msm.Subject + " - " + msm.Attachments.Count);
            }

            //    try
            //    {
            //        path = Environment.CurrentDirectory + "\\emailresponse.txt";

            //        if (System.IO.File.Exists(path))
            //            System.IO.File.Delete(path);

            //        sw = new System.IO.StreamWriter(System.IO.File.Create(path));
            //        // there should be no gap between the imap command and the \r\n
            //        // ssl.read() -- while ssl.readbyte!= eof does not work because there is no eof from server
            //        // cannot check for \r\n because in case of larger response from server ex:read email message
            //        // there are lot of lines so \r \n appears at the end of each line
            //        //ssl.timeout sets the underlying tcp connections timeout if the read or write
            //        //time out exceeds then the undelying connection is closed
            //        tcpc = new System.Net.Sockets.TcpClient("imap.gmail.com", 993);

            //        ssl = new System.Net.Security.SslStream(tcpc.GetStream());
            //        ssl.AuthenticateAsClient("imap.gmail.com");
            //        receiveResponse("");

            //        Console.WriteLine("username : "******"password : "******"$ LOGIN " + username + " " + password + "  \r\n");
            //        Console.Clear();

            //        receiveResponse("$ LIST " + "\"\"" + " \"*\"" + "\r\n");

            //        receiveResponse("$ SELECT INBOX\r\n");

            //        receiveResponse("$ STATUS INBOX (MESSAGES)\r\n");


            //        Console.WriteLine("enter the email number to fetch :");
            //        int number = int.Parse(Console.ReadLine());

            //        receiveResponse("$ FETCH " + number + " body[header]\r\n");
            //        receiveResponse("$ FETCH " + number + " body[text]\r\n");


            //        receiveResponse("$ LOGOUT\r\n");
            //    }
            //    catch (Exception ex)
            //    {
            //        Console.WriteLine("error: " + ex.Message);
            //    }
            //    finally
            //    {
            //        if (sw != null)
            //        {
            //            sw.Close();
            //            sw.Dispose();
            //        }
            //        if (ssl != null)
            //        {
            //            ssl.Close();
            //            ssl.Dispose();
            //        }
            //        if (tcpc != null)
            //        {
            //            tcpc.Close();
            //        }
            //    }


            //    Console.ReadKey();
            //}
            //static void receiveResponse(string command)
            //{
            //    try
            //    {
            //        if (command != "")
            //        {
            //            if (tcpc.Connected)
            //            {
            //                dummy = Encoding.ASCII.GetBytes(command);
            //                ssl.Write(dummy, 0, dummy.Length);
            //            }
            //            else
            //            {
            //                throw new ApplicationException("TCP CONNECTION DISCONNECTED");
            //            }
            //        }
            //        ssl.Flush();


            //        buffer = new byte[2048];
            //        bytes = ssl.Read(buffer, 0, 2048);
            //        sb.Append(Encoding.ASCII.GetString(buffer));


            //        Console.WriteLine(sb.ToString());
            //        sw.WriteLine(sb.ToString());
            //        sb = new StringBuilder();

            //    }
            //    catch (Exception ex)
            //    {
            //        throw new ApplicationException(ex.Message);
            //    }
        }
Exemple #8
0
        public bool Initialize(FeuerwehrCloud.Plugin.IHost hostApplication)
        {
            if (!System.IO.File.Exists("imap.cfg"))
            {
                IMAPConfig.Add("user", "");
                IMAPConfig.Add("password", "");
                IMAPConfig.Add("server", "");
                IMAPConfig.Add("trash", "");
                FeuerwehrCloud.Helper.AppSettings.Save(IMAPConfig, "imap.cfg");
            }
            IMAPConfig = FeuerwehrCloud.Helper.AppSettings.Load("imap.cfg");

            watcher      = new FileSystemWatcher();
            watcher.Path = System.Environment.CurrentDirectory;
            watcher.IncludeSubdirectories = false;
            watcher.Filter              = "imap.cfg";
            watcher.NotifyFilter        = NotifyFilters.LastWrite | NotifyFilters.LastAccess | NotifyFilters.DirectoryName | NotifyFilters.FileName;
            watcher.Changed            += new FileSystemEventHandler((object sender, FileSystemEventArgs e) => IMAPConfig = FeuerwehrCloud.Helper.AppSettings.Load("imap.cfg"));
            watcher.EnableRaisingEvents = true;


            new System.Threading.Thread(() => {
                while (true)
                {
                    try {
                        IEmailClient ImapClient = EmailClientFactory.GetClient(EmailClientEnum.IMAP);
                        ImapClient.Connect(IMAPConfig["server"], IMAPConfig["user"], IMAPConfig["password"], 143, false);
                        ImapClient.SetCurrentFolder("INBOX");
                        ImapClient.LoadMessages();

                        if (!ImapClient.IsConnected)
                        {
                            ImapClient.Connect(IMAPConfig["server"], IMAPConfig["user"], IMAPConfig["password"], 143, false);
                            ImapClient.SetCurrentFolder("INBOX");
                        }
                        ImapClient.SetCurrentFolder("INBOX");
                        ImapClient.LoadMessages();
                        System.Diagnostics.Debug.WriteLine("MSG: " + ImapClient.Messages.Count.ToString());
                        for (int i = 0; i < ImapClient.Messages.Count; i++)
                        {
                            IEmail msm = (IEmail)ImapClient.Messages[i];
                            // Load all infos include attachments
                            msm.LoadInfos();
                            #if _ASTERISK_
                            if (msm.Subject.StartsWith("Facsimile received from"))
                            {
                                FeuerwehrCloud.Helper.Logger.WriteLine("|  < [IMAP4] *** FAX-Mail found!");
                                try {
                                    msm.SetDeleted("");
                                } catch (Exception ex2) {
                                    if (ex2.Message.Contains("Mailbox doesn't exist: INBOX.Trash"))
                                    {
                                    }
                                }
                                System.IO.File.WriteAllBytes("/var/spool/hylafax/recvq/" + msm.Attachments[0].Text, msm.Attachments[0].Body);
                                //gs -dNOPAUSE -q -g300x300 -sDEVICE=tiffg4 -dBATCH -sOutputFile=output_file_name.tif input_file_name.pdf

                                string FName = msm.Attachments[0].Text.Replace(".pdf", ".tif");
                                FeuerwehrCloud.Helper.Helper.exec("/usr/bin/gs", " -dNOPAUSE -q -sDEVICE=tiffg4 -dBATCH -sOutputFile=/var/spool/hylafax/recvq/" + FName + " " + "/var/spool/hylafax/recvq/" + msm.Attachments[0].Text);
                                System.Net.Sockets.TcpClient PP = new System.Net.Sockets.TcpClient();
                                PP.Connect("localhost", 10112);
                                string Telefonnummer = "08031900900"; //msm.TextBody.Substring(msm.TextBody.IndexOf("Rufnummer  : "));
                                //Telefonnummer = Telefonnummer.Substring(Telefonnummer.IndexOf(":")+2);
                                //Telefonnummer = Telefonnummer.Substring(0,Telefonnummer.IndexOf("\r\n"));
                                string Fax = Telefonnummer + "|recvq/" + FName + "\r\n";
                                PP.GetStream().Write(System.Text.Encoding.Default.GetBytes(Fax), 0, Fax.Length);
                                PP.Close();
                            }
                            #else
                            if (msm.Subject == "Neue Faxnachricht")
                            {
                                FeuerwehrCloud.Helper.Logger.WriteLine("|  < [IMAP4] *** FAX-Mail found!");
                                try {
                                    msm.SetDeleted(IMAPConfig["trash"]);
                                } catch (Exception ex2) {
                                    if (ex2.Message.Contains("Mailbox doesn't exist: INBOX.Trash"))
                                    {
                                        //ImapClient.m
                                    }
                                }
                                System.IO.File.WriteAllBytes("/var/spool/hylafax/recvq/" + msm.Attachments[0].Text, msm.Attachments[0].Body);
                                System.Net.Sockets.TcpClient PP = new System.Net.Sockets.TcpClient();
                                PP.Connect("localhost", 10112);
                                string Telefonnummer = msm.TextBody.Substring(msm.TextBody.IndexOf("Rufnummer  : "));
                                Telefonnummer        = Telefonnummer.Substring(Telefonnummer.IndexOf(":") + 2);
                                Telefonnummer        = Telefonnummer.Substring(0, Telefonnummer.IndexOf("\r\n"));
                                string Fax           = Telefonnummer + "|recvq/" + msm.Attachments[0].Text + "\r\n";
                                PP.GetStream().Write(System.Text.Encoding.Default.GetBytes(Fax), 0, Fax.Length);
                                PP.Close();
                                //System.Threading.Thread.Sleep(10000);
                            }
                            #endif
                        }
                        try {
                            ImapClient.Disconnect();
                        } catch (Exception ex) {
                        }
                        System.Threading.Thread.Sleep(1000 * 20);
                    } catch (Exception ex) {
                        System.Diagnostics.Debug.WriteLine(">>" + ex.Message);
                    }
                    System.Threading.Thread.Sleep(1000 * 20);
                }
            }).Start();

            FeuerwehrCloud.Helper.Logger.WriteLine("|  *** IMAP4 loaded for address: " + IMAPConfig["user"]);
            return(true);
        }
Exemple #9
0
        static void Main(string[] args)
        {
            string sFuncName = string.Empty;
            clsLog oLog      = new clsLog();
            Logic  oLogic    = new Logic();
            string sErrDesc  = string.Empty;

            try
            {
                sFuncName = "Main Program";
                oLog.WriteToDebugLogFile("Starting Program", sFuncName);
                string sTicketNumber = string.Empty;
                string sBodyContent  = string.Empty;
                string sServer       = ConfigurationManager.AppSettings["Server"];
                int    iPort         = Convert.ToInt32(ConfigurationManager.AppSettings["Port"]);
                string sFromEmail    = ConfigurationManager.AppSettings["FromEmail"];
                string sFromPassword = ConfigurationManager.AppSettings["FromPassword"];

                IEmailClient ImapClient = EmailClientFactory.GetClient(EmailClientEnum.IMAP);
                ImapClient.Connect(sServer, sFromEmail, sFromPassword, iPort, true);
                ImapClient.SetCurrentFolder("INBOX");
                ImapClient.LoadMessages();
                string sLastEmailId = oLogic.GetMailNumber();
                if (sLastEmailId != "NO RECORDS")
                {
                    int iMailId = Convert.ToInt32(sLastEmailId);
                    for (int i = 440; i <= ImapClient.Messages.Count - 1; i++)
                    {
                        string sCC = string.Empty;
                        oLog.WriteToDebugLogFile("Count of i : " + i, sFuncName);
                        IEmail msm = (IEmail)ImapClient.Messages[i];
                        if (!msm.Subject.Contains("Delivery Status Notification"))
                        {
                            if (msm.SequenceNumber > iMailId)
                            {
                                msm.LoadInfos();

                                foreach (var item in msm.Cc)
                                {
                                    if (sCC.Length == 0)
                                    {
                                        sCC = item.ToString();
                                    }
                                    else
                                    {
                                        sCC = sCC + "," + item.ToString();
                                    }
                                }
                                // Check the subject contains ticket ID or nor
                                if (msm.Subject.Contains("[##"))
                                {
                                    sTicketNumber = oLogic.Between(msm.Subject, "[##", "##]");
                                    sBodyContent  = msm.TextBody.ToString().Replace("\r\n", "<br/>");
                                    //call create thread
                                    string sResult = oLogic.InsertTicketThread(sTicketNumber, sBodyContent, msm.SequenceNumber, sCC);
                                    oLog.WriteToDebugLogFile("For Ticket Number : " + sTicketNumber + " the Result is " + sResult, sFuncName);
                                }
                                else
                                {
                                    string   sEmail        = msm.From[0];
                                    string   sUserName     = oLogic.Before(sEmail, "@");
                                    string   sBodyContent1 = msm.TextBody.ToString().Replace("\r\n", "<br/>");
                                    string   sResult       = oLogic.InsertTicketandUser(sUserName, sEmail, msm.Subject, sBodyContent1, msm.SequenceNumber, sCC);
                                    string[] sArray        = sResult.Split('*');
                                    if (sArray[0] == "SUCCESS")
                                    {
                                        // Send auto reply email to the person who raised the ticket
                                        oLog.WriteToDebugLogFile("Before sending email to Email id : " + sEmail + "and username : "******"[##" + sArray[1].ToString() + "##]", sBodyContent1, ref sErrDesc);
                                        oLog.WriteToDebugLogFile("AFter sending email to Email id : " + sEmail + "and username : "******"For Email id : " + sEmail + "and username : "******" : the Result is " + sResult, sFuncName);
                                }
                            }
                        }
                    }

                    oLog.WriteToDebugLogFile("Ending Program", sFuncName);
                }
                else
                {
                    oLog.WriteToDebugLogFile(sLastEmailId, sFuncName);
                }
            }
            catch (Exception Ex)
            {
                sErrDesc = Ex.Message.ToString();
                oLog.WriteToErrorLogFile(sErrDesc, sFuncName);
                oLog.WriteToDebugLogFile("Completed With ERROR  ", sFuncName);
            }
        }