public UserShows SendMessage(EmailMessage EmailMessage)
        {
            UserShows us = null;
            try
            {
                // if entered show, send email saying entered show
                us = new UserShows(EmailMessage.UserShowId);
                User user = new User(us.Userid);

                if (user.EmailAddress.Length < 5) {
                    throw new Exception("NoEmai");
                }
                Shows thisShow = new Shows(us.ShowID);
                String htmlContents = readTemplate("AdminEmailHandler", "html", thisShow, null);
                String plainContents = readTemplate("AdminEmailHandler", "txt", thisShow, null);

                htmlContents = htmlContents.Replace("[BODY]", EmailMessage.body.Replace("\n", "<br>"));
                plainContents = plainContents.Replace("[BODY]", EmailMessage.body);
                MailMessage mm = new MailMessage();

                AlternateView htmlView = AlternateView.CreateAlternateViewFromString(htmlContents, null, MediaTypeNames.Text.Html);
                LinkedResource logoImage = new LinkedResource(HttpContext.Current.Server.MapPath("~/Assets/logo.gif"), MediaTypeNames.Image.Gif);
                logoImage.ContentId = "LogoImage";
                //htmlView.LinkedResources.Add(logoImage);

                AlternateView plainView = AlternateView.CreateAlternateViewFromString(plainContents, null, MediaTypeNames.Text.Plain);
                mm.Body = plainContents;
                mm.AlternateViews.Add(htmlView);

                SmtpClient client = new SmtpClient();
                mm.From = new MailAddress("*****@*****.**", "First Place Processing");
                mm.To.Add(new MailAddress(user.EmailAddress, user.Name));
                mm.Subject = EmailMessage.Subject;
                client.Send(mm);

                us.ContactStatus = 1;
                us.ContactDate = DateTime.Now;
                us.SaveContactDetails();
            }
            catch (Exception e)
            {
                AppException.LogEvent("SendMessage: "+ e.Message + " " + e.StackTrace);
            }
            return us;
        }
        public void SendForRefund(int ShowID, int UserID)
        {
            Shows show = new Shows(ShowID);
            User user = new User(UserID);
            UserShows us = new UserShows(UserID, ShowID);
            var refcode = us.ID.ToString("000000");

            String htmlContents = readTemplate("Refund", "html", show, refcode);
            String plainContents = readTemplate("Refund", "txt", show, refcode);
            htmlContents = htmlContents.Replace("[PAYMENT_NOTE]", "Your payment will be refunded in the next 5 working days");
            plainContents = plainContents.Replace("[PAYMENT_NOTE]", "Your payment will be refunded in the next 5 working days");

            MailMessage mm = new MailMessage();
            AlternateView htmlView = AlternateView.CreateAlternateViewFromString(htmlContents, null, MediaTypeNames.Text.Html);
            LinkedResource logoImage = new LinkedResource(HttpContext.Current.Server.MapPath("~/Assets/logo.gif"), MediaTypeNames.Image.Gif);
            logoImage.ContentId = "LogoImage";
            //htmlView.LinkedResources.Add(logoImage);
            AlternateView plainView = AlternateView.CreateAlternateViewFromString(plainContents, null, MediaTypeNames.Text.Plain);

            mm.AlternateViews.Add(plainView);
            mm.AlternateViews.Add(htmlView);

            SmtpClient client = new SmtpClient();
            mm.From = new MailAddress("*****@*****.**", "First Place Processing");
            mm.To.Add(new MailAddress(user.EmailAddress, user.Name));
            mm.Bcc.Add(new MailAddress("*****@*****.**", "Accounts"));
            mm.Subject = String.Format("Refund of entry {0} ({1:dd MMM yyyy})", show.ShowName, show.ShowDate);
            client.Send(mm);

            if (us.Status == (int)UserShows.UserStatus.STATUS_ENTERED_AND_PAID)
            {
                mm = new MailMessage();
                mm.From = new MailAddress("*****@*****.**", "First Place Processing");
                mm.To.Add(new MailAddress("*****@*****.**", "First Place Processing"));
                mm.Subject = "Entry Refund Request";
                mm.Body = String.Format("Refund Request from {0}\r\n\r\nRefcode: {1}\r\n\r\nEmail: {2}\r\n\r\nShow: {3}\r\n",
                                        user.Name, refcode, user.EmailAddress, show.ShowName);
                client.Send(mm);
            }
        }