Beispiel #1
0
        public static void SendEmail(TextWriter log, ImapClient imap_client, tblNytMedlem medlem)
        {
            var    message = new MimeMessage();
            string Navn    = medlem.Fornavn + " " + medlem.Efternavn;

            message.To.Add(new MailboxAddress(Navn, medlem.Email));
            message.From.Add(new MailboxAddress("Regnskab Puls3060", "*****@*****.**"));
            message.Subject = "Tak for din tilmelding til løbeklubben Puls 3060";

            var builder = new BodyBuilder();

            builder.HtmlBody = string.Format(emailTemplates.KviteringIndmeldelse, medlem.Fornavn);
            message.Body     = builder.ToMessageBody();
            using (var smtp_client = new SmtpClient())
            {
                smtp_client.Connect("smtp.gigahost.dk", 587, false);
                smtp_client.AuthenticationMechanisms.Remove("XOAUTH2");
                smtp_client.Authenticate("*****@*****.**", "1234West+");
                smtp_client.Send(message);
                smtp_client.Disconnect(true);
            }

            var SendtPost = imap_client.GetFolder("Sendt post");

            SendtPost.Open(FolderAccess.ReadWrite);
            SendtPost.Append(message);
            SendtPost.Close();

            log.WriteLine("SendEmail: " + medlem.Email);
        }
Beispiel #2
0
        public static void ProcessEmails(TextWriter log, string MailFolder)
        {
            //object cc = CloudConfigurationManager.GetSetting("aaa");
            Assembly        assembly = Assembly.GetExecutingAssembly();
            FileVersionInfo fvi      = FileVersionInfo.GetVersionInfo(assembly.Location);
            string          version  = fvi.ProductVersion;

            log.WriteLine("ProductVersion: " + version);

            log.WriteLine("Start ProcessEmails: " + MailFolder);
            dbPuls3060MedlemEntities db = new dbPuls3060MedlemEntities();

            //var qry = from m in db.tblNytMedlem select m;
            //int antal = qry.Count();
            //log.WriteLine("qry.Count()++: " + antal.ToString());

            using (var client = new ImapClient())
            {
                client.Connect("imap.gigahost.dk", 993, true);
                client.AuthenticationMechanisms.Remove("XOAUTH");
                client.Authenticate("*****@*****.**", "1234West+");

                // The Inbox folder is always available on all IMAP servers...
                var Inbox        = client.Inbox;
                var Indmeldelser = client.GetFolder("INBOX.Indmeldelser");

                Inbox.Open(FolderAccess.ReadWrite);

                var query = SearchQuery.DeliveredAfter(DateTime.Now.AddDays(-2)).And(SearchQuery.SubjectContains("Ny besvaret formular fra 'Medlem Puls 3060'!"));
                foreach (var uid in Inbox.Search(query))
                {
                    var    message  = Inbox.GetMessage(uid);
                    string htmlbody = message.HtmlBody;

                    if (htmlbody == null)
                    {
                        continue;
                    }

                    string DecodedString = System.Web.HttpUtility.HtmlDecode(htmlbody);
                    HtmlAgilityPack.HtmlDocument document = new HtmlDocument();
                    document.LoadHtml(DecodedString);
                    HtmlNode rootNode           = document.DocumentNode;
                    IEnumerable <HtmlNode> allp = rootNode.Descendants("p");
                    foreach (var p in allp)
                    {
                        var lin = p.InnerText;
                    }

                    DateTime Date;
                    try
                    {
                        Date = DateTime.Parse(message.Headers["Date"]);
                    }
                    catch
                    {
                        Date = DateTime.Now;
                    }

                    tblNytMedlem medlem = new tblNytMedlem
                    {
                        MessageDate = Date,
                        MessageID   = message.Headers["Message-ID"],
                        MessageFrom = message.Headers["From"]
                    };

                    IEnumerable <HtmlNode> allpre = rootNode.Descendants("pre");
                    foreach (var pre in allpre)
                    {
                        var      lin = pre.InnerText;
                        char[]   sp  = { ':' };
                        string[] arr = lin.Split(sp, 2);
                        if (arr.Length == 2)
                        {
                            string name  = arr[0].Trim().ToUpper();
                            string value = arr[1].Trim();
                            switch (name)
                            {
                            case "FORNAVN":
                                medlem.Fornavn = value;
                                break;

                            case "EFTERNAVN":
                                medlem.Efternavn = value;
                                break;

                            case "ADRESSE":
                                medlem.Adresse = value;
                                break;

                            case "POST NR.":
                                medlem.Postnr = value;
                                break;

                            case "BY":
                                medlem.Bynavn = value;
                                break;

                            case "MAIL":
                                medlem.Email = value;
                                break;

                            case "TELEFON":
                                medlem.Telefon = value;
                                break;

                            case "MOBIL":
                                medlem.Mobil = value;
                                break;

                            case "FØDSELSDAG":
                                try
                                {
                                    medlem.FodtDato = DateTime.ParseExact(value, "d -M -yyyy", CultureInfo.InvariantCulture);
                                }
                                catch
                                {
                                    medlem.FodtDato = null;
                                }
                                break;

                            case "BESKED":
                                if (value == "Skriv en besked til Puls 3060 her")
                                {
                                    medlem.Besked = "";
                                }
                                else
                                {
                                    medlem.Besked = value;
                                }
                                break;

                            case "KØN":
                                medlem.Kon = value;
                                break;

                            default:
                                break;
                            }
                        }
                    }
                    db.tblNytMedlem.Add(medlem);
                    db.SaveChanges();
                    Inbox.MoveTo(uid, Indmeldelser);
                    SendSMS(log);
                    //SendEmail(log, client, medlem);
                    log.WriteLine("S**t ProcessEmails: " + medlem.MessageID);
                }

                client.Disconnect(true);
            }
        }