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; })); }; }
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 }
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); }; }