예제 #1
0
 public SpamModule() : base("api/spam")
 {
     this.Post["/", true] = (_, cancel) =>
     {
         return(Task.Run <dynamic>(() =>
         {
             var file = this.Request.Files.FirstOrDefault();
             string data;
             using (StreamReader sr = new StreamReader(file.Value))
             {
                 data = sr.ReadToEnd();
             }
             string username = this.Context.CurrentUser.UserName;
             bool isValid = IsValidSpamUser(username);
             var db = new CouchDBService();
             var tokens = new TokenService(db);
             string subject = this.Request.Form.subject;
             string body = this.Request.Form.body;
             foreach (var email in GetValidEmails(data, username, isValid))
             {
                 var modBody = InsertLink(body, email, tokens);
                 MailgunService.SendMail(email, subject, modBody);
             }
             return HttpStatusCode.OK;
         }));
     };
 }
예제 #2
0
        protected override void OnBeforeSaving(Email entity, OPERATION_MODE mode = OPERATION_MODE.NONE)
        {
            if (mode == OPERATION_MODE.ADD)
            {
                #region Validations
                if (entity.ToList.Count() == 0 && entity.CcList.Count() == 0 && entity.BccList.Count == 0)
                {
                    throw new KnownError("Cannot send email without Recipients.");
                }
                #endregion

                entity.CreatedAt = DateTimeOffset.Now;
            }

            #region Send Email

            //Copy Attachments when resent:
            if (entity.IsResent)
            {
                string baseAttachmentsPath = AppSettings.Get <string>("EmailAttachments");
                entity.AttachmentsFolder = AttachmentsIO.CopyAttachments(entity.AttachmentsFolder, entity.Attachments, baseAttachmentsPath);
                entity.Attachments       = entity.Attachments.Where(e => !e.ToDelete).ToList();
            }

            var emailService = new MailgunService
            {
                From              = Auth.Email,
                Subject           = entity.Subject,
                Body              = entity.Body,
                AttachmentsFolder = entity.AttachmentsFolder
            };

            foreach (var item in entity.ToList)
            {
                emailService.To.Add(item.Email);
            }

            foreach (var item in entity.CcList)
            {
                emailService.Cc.Add(item.Email);
            }

            foreach (var item in entity.BccList)
            {
                emailService.Bcc.Add(item.Email);
            }

            emailService.Bcc.Add(Auth.Email); //Add sender as recipient as well.

            try
            {
                emailService.SendMail();
            }
            catch (Exception ex)
            {
                throw new KnownError("Could not send email:\n" + ex.Message);
            }
            #endregion
        }
예제 #3
0
        public LoginModule()
            : base("/api/login")
        {
            var db           = new CouchDB.CouchDBService();
            var tokenService = new TokenService(db);

            Post["/"] = ctx =>
            {
                string username;
                var    dto = this.Bind <LoginRequestDto>();
                username = dto.Username;
                var validationResponse = ValidateUsername(username);
                if (validationResponse != null)
                {
                    return(validationResponse);
                }
                var token   = tokenService.Login(username);
                var combine = string.Format("{0}!{1}", username, token);
                MailgunService.SendMail(username, "The unicorn says hi!", string.Format(File.ReadAllText(Path.Combine(AssemblyDirectory, "Mailing\\LoginMailResponse.txt")), this.Request.Url.SiteBase, combine));
                return(HttpStatusCode.OK);
            };
        }