public void Check() { try { var req = WebRequest.Create(CheckUri); var res = req.GetResponse(); var stream = res.GetResponseStream(); var sr = new StreamReader(stream); var body = sr.ReadToEnd(); sr.Close(); stream.Close(); var matches = _ipPattern.Matches(body); // Send these IP address matches in an email to me. var msgBody = new StringBuilder(); msgBody.AppendLine("IP Addresses:"); foreach (var match in matches) { msgBody.AppendLine(match.ToString()); } var msg = new MailMessage(EmailFrom.ToString(), EmailTo.ToString(), EmailSubject, msgBody.ToString()); var smtp = new SmtpClient(); smtp.Send(msg); } catch (Exception ex) { EventLog.WriteEntry(Assembly.GetExecutingAssembly().FullName, string.Format("{0}\n\n{1}", ex.Message, ex.StackTrace), EventLogEntryType.Error); } }
public static Response <History> Create(EmailMessage message) { var response = Response <History> .Create(); if (message.To == null) { response.WithBusinessError(nameof(message.To), "Destinatário não informado."); } if (message.From == null) { response.WithBusinessError(nameof(message.From), "Remetente não informado."); } if (response.HasError) { return(response); } var to = EmailTo.Create(message.To.Name, message.To.Email); var from = EmailFrom.Create(message.From.Name, message.From.Email); var data = JsonConvert.SerializeObject(message); return(response.SetValue(new History(to, from, message.TemplateId, data))); }
public void CreateEmailAlert(long userId, Dictionary <string, string> values) { var user = Users.Include("Contact").Where(p => p.UserId == userId).Single(); var emailTo = user.Contact.Email; var subjectTemplateCode = values["TMP_SUBJECT"]; var bodyTemplateCode = values["TMP_BODY"]; var subjectTemplate = Templates.Where(p => p.Name == subjectTemplateCode && p.Deleted == false).Single().Value; var bodyTemplate = Templates.Where(p => p.Name == bodyTemplateCode && p.Deleted == false).Single().Value; Email email = new Email(); email.FromAddress = values["EMAIL_FROM_ADDRESS"]; email.FromName = values["EMAIL_FROM_NAME"]; email.Subject = MergeTemplateValues(subjectTemplate, values); email.IsHtml = true; email.Body = MergeTemplateValues(bodyTemplate, values); email.EmailStatusTypeId = EmailStatusTypes.Where(p => p.Name == "Created").Single().EmailStatusTypeId; Emails.Add(email); EmailTo to = new EmailTo(); to.Email = email; to.Name = $"{user.Contact.FirstName} {user.Contact.LastName}"; to.Address = emailTo; EmailTos.Add(to); }
public ActionResult CreateSob(Obrabotka obrabotka) { if ((bool)Session["Manip_Tests"] == true && Session["Manip_Tests"] != null) { //Данные заявки var ids = db.ZayavkaNaSobes.Where(z => z.nomerzay == obrabotka.nomerzay).FirstOrDefault(); int?id; if (ids == null) { var sot = db.Sotrs.Where(z => z.ID_Sotr == obrabotka.Sotr_ID).FirstOrDefault(); id = sot.ID_Sotr; } else { id = ids.Sotr_ID; } //Если валидация пройдена успешно if (ModelState.IsValid) { //Добавление данных db.Obrabotka.Add(new Obrabotka { Data_Sob = obrabotka.Data_Sob, Vremya_Sob = obrabotka.Vremya_Sob, Kommnt = obrabotka.Kommnt, reshenie = obrabotka.reshenie, Sotr_ID = (int)id, nomerzay = obrabotka.nomerzay }); //Сохранение db.SaveChanges(); EmailTo.MySendMail("" + "Приветствуем, " + ids.Sotrs.Full + "! " + "Для Вас назначено собеседование.<br><br>" + "Номер заявки: " + ids.nomerzay + "<br>" + "Дата собеседования: " + obrabotka.Data_Sob + ";<br>" + "Время собеседования: " + obrabotka.Vremya_Sob + ".<br><br>" + "Большая просьба, не опаздывать!!!", ids.Sotrs.Email, "Компания CMS", "Собеседование"); if (Session["perehod"] == null) { return(RedirectToAction("Index")); } else { return(Redirect(Session["perehod"].ToString())); } } //Список сотрудников ViewBag.Sotr_ID = new SelectList(db.Sotrs, "ID_Sotr", "Full", obrabotka.Sotr_ID); return(View(obrabotka)); } else { return(Redirect("/Error/NotRight")); } }
public History(EmailTo to , EmailFrom from , string templateId , string data) : base(Guid.NewGuid()) { To = to; From = from; TemplateId = templateId; TemplateData = data; }
private List <Personalization> BuildToRecipients() { var addressesTo = EmailTo?.Split(';'); var addressesBcc = EmailBCC?.Split(';'); var addressesCc = EmailCC?.Split(';'); var personalizationList = new List <Personalization>(); foreach (var address in addressesTo) { var personalization = new Personalization { Tos = new List <EmailAddress> { new EmailAddress() { Email = address } } }; if (addressesBcc != null) { foreach (var bcc in addressesBcc) { personalization.Bccs = new List <EmailAddress> { new EmailAddress() { Email = bcc } }; } } if (addressesCc != null) { foreach (var cc in addressesCc) { personalization.Ccs = new List <EmailAddress> { new EmailAddress() { Email = cc } }; } } personalizationList.Add(personalization); } return(personalizationList); }
public Requests.EmailSend ToObject() { return(new Requests.EmailSend { Account = Account, AttachmentPaths = AttachmentPaths?.Split(','), EmailCC = EmailCC?.Split(','), EmailFrom = EmailFrom, EmailTo = EmailTo?.Split(','), Message = Message, Mime = Mime, Subject = Subject }); }
/// <summary> /// Sends the email. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> protected void SendEmail(object sender, EventArgs e) { try { var salesOrder = BindingSource.Current as ISalesOrder; if (salesOrder != null) { const string scriptFmtString = @"dojo.require('Sage.Utility.Email');Sage.Utility.Email.writeEmail('{0}', '{1}', '{2}');"; var to = new List <EmailTo>(); var cc = new EmailTo(); if (salesOrder.RequestedBy != null) { if (!Equals(salesOrder.RequestedBy, salesOrder.ShippingContact) && !Equals(salesOrder.RequestedBy, salesOrder.BillingContact)) { cc.firstName = salesOrder.RequestedBy.FirstName; cc.lastName = salesOrder.RequestedBy.LastName; cc.emailAddress = salesOrder.RequestedBy.Email; } } if (salesOrder.ShippingContact != null) { to.Add(new EmailTo(salesOrder.ShippingContact.FirstName, salesOrder.ShippingContact.LastName, salesOrder.ShippingContact.Email)); } if (salesOrder.BillingContact != null && !Equals(salesOrder.BillingContact, salesOrder.ShippingContact)) { to.Add(new EmailTo(salesOrder.BillingContact.FirstName, salesOrder.BillingContact.LastName, salesOrder.BillingContact.Email)); } var emailTo = new { to = to, cc = cc, bcc = string.Empty }; string subject = PortalUtil.JavaScriptEncode( string.Format(GetLocalResourceObject("lblEmailSubject.Caption").ToString(), salesOrder.SalesOrderNumber, salesOrder.Account.AccountName)); string emailBody = FormatEmailBody(salesOrder); ScriptManager.RegisterStartupScript(this, GetType(), "emailscript", string.Format(scriptFmtString, JsonConvert.SerializeObject(emailTo), subject, emailBody), true); } } catch (Exception ex) { log.Error(ex.Message); } }
public ActionResult Create(ZayavkaNaSobes zayavkaNaSobes, int[] idqu, string[] Doc) { //Получение данных аккаунта var ids = db.Sotrs.Where(s => s.Login_Acc == User.Identity.Name).FirstOrDefault(); if (idqu != null && idqu.Length > 0) { //Цикл по всем вопросам for (int i = 0; i < idqu.Length; i++) { //Добавление данных db.ZayavkaNaSobes.Add(new ZayavkaNaSobes { Sotr_ID = ids.ID_Sotr, Qwe_ID = idqu[i], otvet = Doc[i], datazayavki = Session["dataz"].ToString(), nomerzay = Session["NumZ"].ToString(), itog = false }); //Сохранение db.SaveChanges(); ViewBag.Suсc = true; ViewBag.SucсMes = "Ваша заявка успешно отправлена, ожидайте решение компании"; } EmailTo.MySendMail("" + "Приветствуем, " + ids.Full + "! " + "Спасибо за оформленную заявку для прохождения собеседования в ООО \"Си эМ эС\"! Ожидайте, в ближайшее время мы примем решение.<br><br>" + "Номер заявки: " + Session["NumZ"].ToString() + "* <br><br>" + "* - С помощью данного номера, Вы можете просматривать результат поданной заявки!!!", ids.Email, "Компания CMS", "Собеседование"); //Вывод отчета по заявке return(Redirect("/Home/ZayObr/" + Session["NumZ"].ToString())); } return(RedirectToAction("Zayavki", "Home")); }
public ActionResult Register(RegisterModel model) { //Если значение поля для загрузки фото не пустое if (model.ImageUpload != null) { //Получение имени файла string filename = Path.GetFileNameWithoutExtension(model.ImageUpload.FileName); //Расширение файла string extension = Path.GetExtension(model.ImageUpload.FileName); //Новое уникальное наименование, которое будет занесено в БД filename = filename + DateTime.Now.ToString("yymmssfff") + extension; //Значение для поля Фото, которое будет добавлено в БД с путем к файлу model.Photo = "/Content/Photo/st/" + filename; //Загрузка фото в папку model.ImageUpload.SaveAs(Path.Combine(Server.MapPath("~/Content/Photo/st/"), filename)); } else { //Иначе дефолтное значение model.Photo = "/Content/Photo/st/default.png"; } Accounts user = null; //Поиск пльзователей с таким логином user = db.Accounts.FirstOrDefault(u => u.Login == model.Login); //Если не найдено, то добавляем нового if (user == null) { //Если валидация пройдена успешно if (ModelState.IsValid) { //Создаем команду SqlCommand command = new SqlCommand("", Program.SqlConnection); //Запрос для команды (проверка на возраст) command.CommandText = "select Datediff(year, '" + model.Day_Of_Birth + "', getdate())"; int?voz = 0; Program.SqlConnection.Open(); // Выполнение команды voz = (int)command.ExecuteScalar(); Program.SqlConnection.Close(); //В соответствии со ст. 63 ТК РФ, Официально можно работать в России с 16 лет //Проверка, есть ли пользователю 16 лет и более if (voz <= 16) { ModelState.AddModelError("Day_Of_Birth", "Возрастные ограничения 18+"); return(View(model)); } Session["War"] = false; //Добавление нового аккаунта db.Accounts.Add(new Accounts { Login = model.Login, Password = model.Password, Password_Shifr = Shifrovanie.Hash(model.Password), Role_ID = 4, Logical_Delete = false, Block = false }); //Сохранение данных db.SaveChanges(); //Добавление сотрудника db.Sotrs.Add(new Sotrs { Surname_Sot = model.Surname_Sot, Name_Sot = model.Name_Sot, Petronumic_Sot = model.Petronumic_Sot, Day_Of_Birth = model.Day_Of_Birth, Address = Shifrovanie.Encryption(model.Address), Num_Phone = model.Num_Phone, Email = model.Email, Photo = model.Photo, Date_of_adoption = null, fired = false, Guest = true, Logical_Delete = false, Login_Acc = model.Login }); //Сохранение данных db.SaveChanges(); //Отправка письма на почту EmailTo.MySendMail("" + "Приветствуем, " + model.Surname_Sot + " " + model.Name_Sot + " " + model.Petronumic_Sot + "! <br>Мы рады, " + "что вы зарегистрировались в нашей системе. Мы надеемся, что не разочаруем Вас. С радостью ответим на Ваши вопросы." + "<br><br>Ваш Логин: " + model.Login + " <br>Пароль: " + model.Password, model.Email, "Компания CMS", "Регистрация на сайте компании CMS"); //Поиск пользователя user = db.Accounts.Where(u => u.Login == model.Login && u.Password == model.Password).FirstOrDefault(); //Если пользователь найден if (user != null) { //Авторизовываем пользователя FormsAuthentication.SetAuthCookie(model.Login, true); //Получение данных о пользователе var s = db.Sotrs.Where(sot => sot.Login_Acc == model.Login); Session["FIO"] = model.Surname_Sot + " " + model.Name_Sot + " " + model.Petronumic_Sot; Session["Email"] = model.Email; Session["Num_Phone"] = model.Num_Phone; Session["Address"] = model.Address; Session["Day_Of_Birth"] = model.Day_Of_Birth; Session["Photo"] = model.Photo; Session["Dolj"] = "Статус: Гость"; //Открытие личного кабинета EmployeesHub.BroadcastData(); return(RedirectToAction("Index", "Home")); } //Иначе выводим надпись, данные введены некоррекно else { ModelState.AddModelError("", "Попробуйте зарегистрироваться снова"); Session["War"] = true; return(View(model)); } } } else { //Сообщение, что пользователь с таким логином уже существует ModelState.AddModelError("", "Пользователь с данным логином уже существует"); Session["War"] = true; return(View(model)); } return(View(model)); }
public string Send(EmailMessage emailMessage) { string NameFrom = emailMessage.FromAddresses.Substring(1, emailMessage.FromAddresses.IndexOf("/") - 1); string NameTo = emailMessage.FromAddresses.Substring(1, emailMessage.FromAddresses.IndexOf("/") - 1); var message = new MimeMessage(); try { message.From.Add(new MailboxAddress(NameFrom, emailMessage.FromAddresses)); message.To.Add(new MailboxAddress(NameTo, emailMessage.ToAddresses)); message.Subject = emailMessage.Subject; var bodyBuilder1 = new BodyBuilder(); bodyBuilder1.HtmlBody = emailMessage.Content; var builder = new BodyBuilder(); var image = builder.LinkedResources.Add(@"./poulinalogo.png"); image.ContentId = MimeUtils.GenerateMessageId(); builder.HtmlBody = string.Format(@"<br><br><br> <table> <thead> <tr> <td> {0} </td> </tr> </thead> <tbody> <tr> <td>E-Mail : {1}</td> </tr> <tr> <td>Service : Informatique Operationnelle</td> </tr> <tr> <td>Poste : 801249</td> </tr> <tr> <td>GSM : 58278855</td> </tr> </tbody> <tfoot> <center><img src=""cid:{2}""></center> </tfoot> </table>", NameFrom, message.From.ToString(), image.ContentId); var multipart = new Multipart("mixed"); multipart.Add(bodyBuilder1.ToMessageBody()); multipart.Add(builder.ToMessageBody()); var multipart1 = new Multipart("Attachements"); message.Body = multipart; using (var emailClient = new SmtpClient()) { emailClient.Connect(_emailConfiguration.SmtpServer, _emailConfiguration.SmtpPort, false); emailClient.Send(message); emailClient.Disconnect(true); EmailFrom emailFrom = new EmailFrom(); emailFrom.FromAddresses = emailMessage.FromAddresses; emailFrom.FromName = NameFrom; emailFrom.Subject = emailMessage.Subject; emailFrom.Content = emailMessage.Content; emailFrom.SendDate = DateTime.Now; emailFrom.MessageType = "info"; emailFrom.ExceptionMessage = "0"; _context.EmailFroms.Add(emailFrom); EmailTo emailTo = new EmailTo(); emailTo.IdMail = emailFrom.IdMail; emailTo.Seen = false; emailTo.ToAddresses = emailMessage.ToAddresses; emailTo.ToName = NameTo; emailTo.ReceiveType = "A"; _context.EmailTos.Add(emailTo); _context.SaveChanges(); return("Mail success"); } } catch (Exception ex) { EmailFrom emailFrom = new EmailFrom(); emailFrom.FromAddresses = emailMessage.FromAddresses; emailFrom.FromName = NameFrom; emailFrom.Subject = emailMessage.Subject; emailFrom.Content = emailMessage.Content; emailFrom.SendDate = DateTime.Now; emailFrom.MessageType = "info"; emailFrom.ExceptionMessage = ex.Message; _context.EmailFroms.Add(emailFrom); EmailTo emailTo = new EmailTo(); emailTo.IdMail = emailFrom.IdMail; emailTo.Seen = false; emailTo.ToAddresses = emailMessage.ToAddresses; emailTo.ToName = NameTo; emailTo.ReceiveType = "A"; _context.EmailTos.Add(emailTo); _context.SaveChanges(); return(ex.Message); } }
public async Task <bool> Send(EmailTo email_to, string subject, MailBasic view_data, string view_name = "Basic", string from = null, string[] attachments = null) { try { MailMessage mail = new MailMessage(); System.Net.Mail.SmtpClient SmtpServer = new System.Net.Mail.SmtpClient(_mailSettings.Host); // mail.To.Add("to_address"); //mail.Subject = "Test Mail"; //mail.Body = "This is for testing SMTP mail from GMAIL"; SmtpServer.Port = (int)_mailSettings.Port; SmtpServer.Credentials = new System.Net.NetworkCredential(_mailSettings.Mail, _mailSettings.Password); SmtpServer.EnableSsl = true; view_data.AppUrl = _appConfig.APP_URL; view_data.AppLogo = _appConfig.APP_URL + "/uploads/app/" + _appConfig.APP_LOGO; view_data.CopyRight = "© " + DateTime.Now.Year + " " + _appConfig.APP_NAME + " | All Rights Reserved."; if (from == null) { from = _mailSettings.Mail; } var arrayEmail = from.Replace(">", "").Split('<'); var from_name = arrayEmail[0].Trim(); var from_email = arrayEmail[1].Trim(); from_email = from_email == null ? from_name : from_email; mail.From = new MailAddress(from_email); var to = new { To = email_to.To, //CC = CommonHelper.IsPropertyExist(email_to, "CC") ? email_to.CC : new string[0], CC = email_to.Cc, //Bcc = CommonHelper.IsPropertyExist(email_to, "Bcc") ? email_to.Bcc : new string[0], Bcc = email_to.Bcc, //Attachments = CommonHelper.IsPropertyExist(email_to, "Attachments") ? email_to.Attachments : new string[0], Attachments = email_to.Attachments }; foreach (var recipient in to.To) { //var arrayRecipient = recipient.Replace(">", "").Split('<'); //var to_name = arrayRecipient[1].Trim(); //var to_email = arrayRecipient[0].Trim(); mail.To.Add(recipient); } if (to.CC != null) { foreach (var recipient in to.CC) { //var arrayRecipient = recipient.Replace(">", "").Split('<'); //var cc_name = arrayRecipient[1].Trim(); //var cc_email = arrayRecipient[0].Trim(); mail.CC.Add(recipient); } } if (to.Bcc != null) { foreach (var recipient in to.Bcc) { //var arrayRecipient = recipient.Replace(">", "").Split('<'); //var bcc_name = arrayRecipient[1].Trim(); //var bcc_email = arrayRecipient[0].Trim(); mail.Bcc.Add(recipient); } } if (to.Attachments != null) { foreach (var value in to.Attachments) { mail.Attachments.Add(value); } } mail.IsBodyHtml = true; mail.Subject = subject; //mail.Body = ConvertViewToString("~/Views/Emails/Html/" + view_name + ".cshtml", view_data); var body_html = await GetParsedContent("~/Views/Emails/Html/" + view_name + ".cshtml", view_data); body_html = body_html.Replace("\r\n", ""); mail.Body = body_html; SmtpServer.Send(mail); } catch (Exception ex) { //SignerHelper.LogEx(ex); return(false); } return(true); }
static int LoadEmail(bool ProductionOnly, string[] args, SqlCommand cmd2, DateTime CurrentDateTime, string EmailIdentifier) { int Status = 0; // Create a database connection SqlConnection conn = new SqlConnection("Data Source=(local);Integrated Security=SSPI;Initial Catalog=EATDW;Connection Timeout=120"); conn.Open(); SqlCommand cmd = conn.CreateCommand(); // Retrieve emails from the database. cmd.CommandText = "Select Top 900 SendEmailId,EmailTo,EmailCC,EmailSubject,EmailBodyText,EmailBodyDataTableHeader,EmailBodyDataTable,EmailBodyDataTableFooter From Email_SendEmail_Archive Where SendEmailType = '" + args[0] + "' And SendEmailLevelName = '" + args[1] + "' And SendAttemptDateTime = '" + CurrentDateTime + "' And SendStatus = 'Not Sent' And SummarySegment = '" + args[3] + "'"; SqlDataReader reader = cmd.ExecuteReader(); String SendEmailId = ""; String EmailTo; String EmailCC; String EmailSubject; String EmailBody; String EmailBodyText; String EmailBodyDataTableHeader; String EmailBodyDataTable; String EmailBodyDataTableFooter; try { while (reader.Read()) { SendEmailId = reader["SendEmailId"].ToString(); EmailTo = reader["EmailTo"].ToString(); EmailCC = reader["EmailCC"].ToString(); EmailSubject = reader["EmailSubject"].ToString(); EmailBodyText = reader["EmailBodyText"].ToString(); EmailBodyDataTableHeader = reader["EmailBodyDataTableHeader"].ToString(); EmailBodyDataTable = reader["EmailBodyDataTable"].ToString(); EmailBodyDataTableFooter = reader["EmailBodyDataTableFooter"].ToString(); // Prep the email for sending EmailTo = EmailTo.Replace(";", "@microsoft.com,"); if (EmailTo != "") { EmailTo = EmailTo.Substring(0, EmailTo.Length - 1); } EmailCC = EmailCC.Replace(";", "@microsoft.com,"); if (EmailCC != "") { EmailCC = EmailCC.Substring(0, EmailCC.Length - 1); } EmailBody = EmailBodyText; if (!ProductionOnly) { EmailBody = EmailBody.Replace("<tr><td><img src=\"http://annuity/emailbanner.jpg\"/><br/></td></tr>", "<tr><td>To: [EmailTo]</td></tr><tr><td>CC: [EmailCC]</td></tr><tr><td><img src=\"http://annuity/emailbanner.jpg\"/><br/></td></tr>"); EmailBody = EmailBody.Replace("[EmailTo]", EmailTo); EmailBody = EmailBody.Replace("[EmailCC]", EmailCC); } EmailBody = EmailBody.Replace("[EmailBodyDataTableHeader]", EmailBodyDataTableHeader); EmailBody = EmailBody.Replace("[EmailBodyDataTable]", EmailBodyDataTable); EmailBody = EmailBody.Replace("[EmailBodyDataTableFooter]", EmailBodyDataTableFooter); EmailBody = EmailBody.Replace("[EmailIdentifier]", EmailIdentifier); //Console.WriteLine("done setting parameters for: " + SendEmailId);//test //Console.WriteLine("EmailTo:" + EmailTo);//test //Console.WriteLine("EmailCC:" + EmailCC);//test // Send Email try { SendEmail(EmailTo, EmailCC, EmailSubject, EmailBody, SendEmailId, ProductionOnly); //Console.WriteLine("done sending email for: " + SendEmailId);//test cmd2.CommandType = CommandType.Text; cmd2.CommandText = "Update Email_SendEmail_Archive Set SendStatus = 'Success' Where SendEmailId = " + SendEmailId + " And SendAttemptDateTime = '" + CurrentDateTime + "'"; } catch (Exception ex) { String ErrorMessage = ex.Message; //Console.WriteLine(ErrorMessage);//test //Console.ReadLine();//test cmd2.CommandType = CommandType.Text; cmd2.CommandText = "Update Email_SendEmail_Archive Set SendStatus = 'Fail - App Error' Where SendEmailId = " + SendEmailId + " And SendAttemptDateTime = '" + CurrentDateTime + "'"; Status = 1; } cmd2.ExecuteNonQuery(); //Console.WriteLine("done setting email send status for: " + SendEmailId);//test } } catch (Exception ex2) { String ErrorMessage = ex2.Message; //Console.WriteLine(ErrorMessage);//test //Console.ReadLine();//test cmd2.CommandType = CommandType.Text; cmd2.CommandText = "Update Email_SendEmail_Archive Set SendStatus = 'Fail - App Error' Where SendEmailId = " + SendEmailId + " And SendAttemptDateTime = '" + CurrentDateTime + "'"; cmd2.ExecuteNonQuery(); Status = 1; //Console.WriteLine("done setting email app failure for: " + SendEmailId);//test } reader.Close(); conn.Close(); return(Status); }
public void SendEmail() { var message = new MimeMessage(); // Add Email From message.From.Add(new MailboxAddress(EmailFrom)); // Add Email To if (EmailTo != null && EmailTo != String.Empty) { if (EmailTo.Contains(";")) { List <string> toList = new List <string>(); toList = EmailTo.Split(';').ToList(); foreach (string email in toList) { message.To.Add(new MailboxAddress(email)); } } else { message.To.Add(new MailboxAddress(EmailTo)); } } // Add Email CC if (EmailCC != null && EmailCC != String.Empty) { if (EmailCC.Contains(";")) { List <string> toList = new List <string>(); toList = EmailCC.Split(';').ToList(); foreach (string email in toList) { message.Cc.Add(new MailboxAddress(email)); } } else { message.Cc.Add(new MailboxAddress(EmailCC)); } } // Add Subject, currently just an error subject message.Subject = EmailSubject; // Add Body, currently just an error body message.Body = new TextPart("plain") { Text = EmailBody }; using (var client = new SmtpClient(new ProtocolLogger("smtp.log"))) { int count = 0; int maxTries = 1000; bool done = false; while (done == false) { try { UpdateConsoleStep("Attempting to Connect to SMTP Server..."); client.Disconnect(true); client.Timeout = 60000; client.ServerCertificateValidationCallback = (s, c, h, e) => true; client.CheckCertificateRevocation = false; //client.SslProtocols = System.Security.Authentication.SslProtocols.Tls; client.Connect(EmailConfig.SmtpServer, EmailConfig.SmtpPort, MailKit.Security.SecureSocketOptions.Auto); done = true; } catch (Exception e) { UpdateConsoleStep(e.Message); client.Disconnect(true); if (e.Message.Contains("existing connection was forcibly closed")) { if (++count == maxTries) { return; } else { System.Threading.Thread.Sleep(500); } } } } UpdateConsoleStep("Authenticating User to SMTP Server..."); client.Authenticate(EmailConfig.SmtpUsername, EmailConfig.SmtpPassword); UpdateConsoleStep("Sending Email..."); client.Send(message); UpdateConsoleStep("Disconnecting from SMTP Server..."); client.Disconnect(true); } }
public void IssueZendeskReturnLabel(string no, string docNo, bool closeWindow, Zendesk ticket) { SendService ss = new SendService(); string pdf64String = string.Empty; string amazonBucketURL = string.Empty; try { if (ExistingZendeskTicket) { string message = string.Empty; ZendeskTicket = ticket; if (EmailTo != null) { int index = EmailTo.IndexOf('@'); EmailTo = EmailTo.Insert(index, "+id" + TicketNo); } else { EmailTo = string.Empty; } if (FromEmail == null) { FromEmail = string.Empty; } pdf64String = ss.IssueReturnLabel(no, EmailTo, ExistingZendeskTicket, FromEmail, DownloadManually, CustomerEmailAddress, FromEmailName, EmailSubject, ref amazonBucketURL, GenerateURL); Session["NoUserInteraction"] = true; ZendeskTicket.UpdateZendeskTicketWithPDFFile(pdf64String, no, amazonBucketURL); message = no + ", Return label is being processed and will be emailed within 1 hour."; Page.ClientScript.RegisterStartupScript(this.GetType(), "issueReturnLableExistingTicket", "alert('" + Json.Encode(message) + "');", true); if (closeWindow) { Page.ClientScript.RegisterStartupScript(this.GetType(), "closeAfterProcessing", "parent.window.close();", true); } } else if (NewZendeskTicket) { string message = string.Empty; pdf64String = ss.IssueReturnLabel(no, EmailTo, ExistingZendeskTicket, FromEmail, DownloadManually, CustomerEmailAddress, FromEmailName, EmailSubject, ref amazonBucketURL, GenerateURL); Session["NoUserInteraction"] = true; long?newZendeskTicketID = 0; ZendeskTicket = new Zendesk(); newZendeskTicketID = ZendeskTicket.CreateNewZendeskTicketWithPDFFile(pdf64String, no, amazonBucketURL, EmailTo, CustomerName, docNo); message = "New Zendesk Ticket is: " + newZendeskTicketID + @". " + no + ", Return label is being processed and will be emailed within 1 hour."; Page.ClientScript.RegisterStartupScript(this.GetType(), "issueReturnLabelNewTicket", "alert('" + Json.Encode(message) + "');", true); Page.ClientScript.RegisterStartupScript(this.GetType(), "closeErrorAlert", "parent.window.close();", true); } else if (DownloadManually) { string message = string.Empty; pdf64String = ss.IssueReturnLabel(no, string.Empty, ExistingZendeskTicket, string.Empty, DownloadManually, CustomerEmailAddress, FromEmailName, EmailSubject, ref amazonBucketURL, GenerateURL); Session["NoUserInteraction"] = true; if (pdf64String != string.Empty) // Display only the URL { ZendeskTicket = new Zendesk(); ZendeskTicket.DownloadRMAPDFManually(pdf64String, no); message = no + ", Return label has been successfully downloaded."; Page.ClientScript.RegisterStartupScript(this.GetType(), "manualDownloadExistingTicket", "alert('" + Json.Encode(message) + "');", true); Page.ClientScript.RegisterStartupScript(this.GetType(), "closeAfterDownload", "parent.window.close();", true); } else { Page.ClientScript.RegisterStartupScript(this.GetType(), "manualDownloadExistingTicket", "alert('The file could not be downloaded.');", true); } } else if (GenerateURL) { string message = string.Empty; string clipboardMessage = string.Empty; pdf64String = ss.IssueReturnLabel(no, string.Empty, ExistingZendeskTicket, string.Empty, DownloadManually, CustomerEmailAddress, FromEmailName, EmailSubject, ref amazonBucketURL, GenerateURL); Session["NoUserInteraction"] = true; if (amazonBucketURL != string.Empty) // Display only the URL { BitlyAPI bitlyAPI = new BitlyAPI(); string url = bitlyAPI.ShortenURL(amazonBucketURL); message = no + ", Return label URL has been successfully generated."; clipboardMessage = @"Hello, Your return request has been approved. Your Return Merchandise Authorization number is " + no + @" Follow the link below to download your return instructions and shipping label. Or copy and paste the link into your browser. " + url + @" IMPORTANT: Please remove ALL locks and passwords. Any device(s) received locked with your information will be denied, returned at your expense with no refund submitted for processing. Thank You"; Page.ClientScript.RegisterStartupScript(this.GetType(), "clipboardMessage", "CopyToClipboard('" + Json.Encode(clipboardMessage) + "');", true); } else { Page.ClientScript.RegisterStartupScript(this.GetType(), "manualGenerateURL", "alert('The URL could not be generated.');", true); } } else { Page.ClientScript.RegisterStartupScript(this.GetType(), "manualDownloadExistingTicket", "alert('Please select a valid option.');", true); } } catch (Exception ex) { Log.Error(ex.Message, ex); Page.ClientScript.RegisterStartupScript(this.GetType(), "errorAlert", "alert('" + ex.Message.Replace("'", "\"").Replace("\n", "\\n") + "');", true); if (ex.Message.ToLower().Contains("session")) { Page.ClientScript.RegisterStartupScript(this.GetType(), "closeErrorAlert", "parent.window.close();", true); } } }
public async Task <ContentResult> Send() { dynamic respo; try { HttpContext.Session.Set(Auth.Session, "1"); var user = _authHelper.User(); var mail = new MailHelper(_appConfig); if (!ValidateStamperPos(Request.Form["positions"])) { var initResp = new CommonHelper(_config).Responder("error", "Oops!", "Stamper position is not valid", "reload()"); return(Content(JsonConvert.SerializeObject(initResp), "application/json")); } var form_document_key = Request.Form["document_key"].ToString(); var document = _repository.signer_file.Where(o => o.document_key == form_document_key).FirstOrDefault(); _signerHelper.Logging("Assign Pointing Signature, The Request Signature Req ID:" + document.request_id); var requestsData = _repository.signer_requests.Where(o => o.id == document.request_id).Where(o => o.next_order == 0) .Where(o => o.status == "Draft").FirstOrDefault(); var workflow = _repository.signer_workflow.Where(o => o.request_id == document.request_id).Select(o => o.email).ToList(); var name = JsonConvert.DeserializeObject(Request.Form["name"]); var emails = JsonConvert.DeserializeObject <dynamic>(Request.Form["emails"]); var message = Request.Form["message"]; var documentKey = document.document_key; var duplicate = Request.Form["duplicate"]; var chain = Request.Form["chain"]; dynamic chainEmails = null; dynamic chainPositions = null; var positions = new List <dynamic>(); string activity = ""; //if (emails.Count == 1) if (Enumerable.Count(emails) == 1) { var first_email = System.Linq.Enumerable.FirstOrDefault(emails); activity = "Signing request sent to <span class=\"text - primary\">" + first_email.employee_email + "</span> by <span class=\"text-primary\">" + user.employee_name + "</span>"; } else { activity = "Signing request sent to <span class=\"text - primary\">" + String.Join(",", emails) + "</span> by <span class=\"text-primary\">" + user.employee_name + "</span>"; } if (!string.IsNullOrWhiteSpace(Request.Form["positions"]) && document.is_template == "No") { var positionsOriginal = JsonConvert.DeserializeObject <dynamic>(Request.Form["positions"]); if (emails != null) { foreach (string positionsSingle in positionsOriginal) { var obj_positionsSingle = JsonConvert.DeserializeObject <dynamic>(positionsSingle); if (obj_positionsSingle != null) { if (Request.Form["docWidth"] != "set") { var docWidth = (string)Request.Form["docWidth"]; obj_positionsSingle.Insert(0, docWidth); } positions.Add(JsonConvert.SerializeObject(obj_positionsSingle)); } else { positions.Add(""); } } } else { var obj_positionsSingle = JsonConvert.DeserializeObject <dynamic>(positionsOriginal[0].ToString()); if (Request.Form["docWidth"] != "set") { var docWidth = (string)Request.Form["docWidth"]; obj_positionsSingle.Insert(0, docWidth); } positions[0] = JsonConvert.SerializeObject(obj_positionsSingle); } } else if (!string.IsNullOrWhiteSpace(Request.Form["positions"]) && document.is_template == "Yes") { foreach (var email in emails) { positions.Add(Request.Form["positions"]); } } else { foreach (var email in emails) { positions.Add(""); } } if (chain == "Yes") { chainEmails = JsonConvert.DeserializeObject <dynamic>(JsonConvert.SerializeObject(emails)); chainEmails.RemoveAt(0); chainEmails = JsonConvert.SerializeObject(chainEmails); chainPositions = JsonConvert.DeserializeObject <dynamic>(JsonConvert.SerializeObject(positions)); chainPositions.RemoveAt(0); chainPositions = JsonConvert.SerializeObject(chainPositions); } var index = 0; foreach (var email in emails) { var signingKey = RandomGenerator.RandomString(32); string employee_email = email.employee_email; var result = _repository.signer_workflow.Where(o => o.request_id == document.request_id && o.document == document.document_key && o.email == employee_email).ToList(); result.ForEach(o => { o.sender_note = requestsData.sender_note; o.chain_emails = chainEmails; o.chain_positions = chainPositions; o.signing_key = signingKey; o.positions = positions[index]; o.updated_at = DateTime.Now; o.updated_by = Convert.ToInt32(user.employee_id); }); index++; //context.saveChanges() } //context.saveChanges() if (requestsData.workflow_method == "SEQUENCE") { var sendEmail = _repository.signer_workflow.Where(o => o.request_id == document.request_id).Where(o => o.status == "PENDING" && o.notes == "SEQUENCE" && o.order_by == requestsData.next_order); foreach (var sent in sendEmail) { var employee = _repository.signer_employee.FirstOrDefault(o => o.employee_id == requestsData.sender); var employee_to = _repository.signer_employee.Where(o => o.employee_id == sent.employee_id.ToString()).FirstOrDefault(); var category = _repository.signer_m_docs_category.Where(o => o.category_id == document.category_id).FirstOrDefault(); var signingLink = _appConfig.APP_URL + "/Guest/Open/" + sent.document + "?signingKey=" + sent.signing_key; var trackerLink = _appConfig.APP_URL + "/mailopen?signingKey=" + sent.signing_key; var email_to = new EmailTo { To = new List <String> { sent.email } }; var send = await mail.Send(email_to, "[ONESIGN] " + employee.employee_name + " Invites You to Sign Document", new MailBasic { Title = "", SubTitle = "", ButtonText = "Sign Now", ButtonLink = signingLink, Message = "Dear " + employee_to.employee_name + ",<br><br>You have been invited to sign a document by " + employee.employee_name + "" + ". Click the link below to respond to the invite." + "<br><br> Request ID : 000000" + sent.request_id + "<br>Requestor : " + _signerHelper.GetEmployeeName(requestsData.sender) + " <br>Document Name : " + document.name + "<br> Category : " + category.category_name + "</br> Message : " + Request.Form["message"] + "<br><br>Regards,<br>" }, "WithButton"); if (!send) { var resp = _commonHelper.Responder("Error", "Oops!", "Email Not Send"); return(Content(JsonConvert.SerializeObject(resp), "application/json")); } break; } } else if (requestsData.workflow_method == "PARALEL") { var sendEmail = _repository.signer_workflow.Where(o => o.request_id == document.request_id && o.status == "PENDING" && o.notes == "PARALEL" && o.order_by == requestsData.next_order); foreach (var sent in sendEmail) { //var employee = context.signer_employee.Where(o => o.employee_id == sent.employee_id.ToString()).FirstOrDefault(); var employee = _repository.signer_employee.FirstOrDefault(o => o.employee_id == requestsData.sender); var employee_to = _repository.signer_employee. Where(o => o.employee_id == sent.employee_id.ToString()).FirstOrDefault(); var category = _repository.signer_m_docs_category.Where(o => o.category_id == document.category_id).FirstOrDefault(); var signingLink = _appConfig.APP_URL + "/Guest/Open/" + sent.document + "?signingKey=" + sent.signing_key; var trackerLink = _appConfig.APP_URL + "/mailopen?signingKey=" + sent.signing_key; var email_to = new EmailTo { To = new List <String> { sent.email } }; var send = await mail.Send(email_to, "[ONESIGN] " + employee.employee_name + " Invites You to Sign Document", new MailBasic { Title = "", SubTitle = "", ButtonText = "Sign Now", ButtonLink = signingLink, Message = "Dear " + employee_to.employee_name + ",<br><br>You have been invited to sign a document by " + employee.employee_name + "" + ". Click the link below to respond to the invite." + "<br><br> Request ID : 000000" + sent.request_id + "<br>Requestor : " + _signerHelper.GetEmployeeName(requestsData.sender) + " </br>Document Name : " + document.name + "<br> Category : " + category.category_name + "</br> Message : " + Request.Form["message"] + "<br><br>Regards,<br>" }, "WithButton"); if (!send) { var resp = _commonHelper.Responder("Error", "Oops!", "Email Not Send"); return(Content(JsonConvert.SerializeObject(resp), "application/json")); } } } else if (requestsData.workflow_method == "COMBINE") { } respo = new CommonHelper(_config).Responder("success", "Sent!", "Request successfully sent.", "reload()"); return(Content(JsonConvert.SerializeObject(respo), "application/json")); } catch (Exception ex) { //SignerHelper.LogEx(ex); respo = new CommonHelper(_config).Responder("error", "Oops!", "Something Error"); return(Content(JsonConvert.SerializeObject(respo), "application/json")); } }
public async Task <ActionResult> Edit([Bind(Include = "ID_Isp,Pos_Res_ID,Date_Start,Date_Finish,Status_ID,itog")] Isp_Sroki isp_Sroki) { if ((bool)Session["Manip_Sotrs"] == true && Session["Manip_Sotrs"] != null) { //если валидация прошла успешно if (ModelState.IsValid) { //Изменение данных и их фиксирование db.Entry(isp_Sroki).State = EntityState.Modified; SqlCommand command = new SqlCommand("", Program.SqlConnection); //Манипулирование этапами принятия command.CommandText = "select count(*) from Steps join Sotrs on Steps.Sotr_ID = ID_Sotr join Posit_Responsibilities on Posit_Responsibilities.Sotr_ID = ID_Sotr where ID_Pos_Res = " + isp_Sroki.Pos_Res_ID; Program.SqlConnection.Open(); //Изменение тех что в процессе на ожидании int?step_count = (int)command.ExecuteScalar(); command.CommandText = "select ID_Sotr from Sotrs join Posit_Responsibilities on Posit_Responsibilities.Sotr_ID = ID_Sotr where ID_Pos_Res = " + isp_Sroki.Pos_Res_ID; int?idst = (int)command.ExecuteScalar(); Program.SqlConnection.Close(); if (isp_Sroki.Status_ID != 1) { if (step_count != null && step_count != 0) { command.CommandText = "update [dbo].[Steps] set [Isp_Srok] = 'false' where Sotr_ID = " + idst; Program.SqlConnection.Open(); //Изменение тех что в процессе на ожидании command.ExecuteNonQuery(); Program.SqlConnection.Close(); } else { command.CommandText = "Insert into dbo.Steps ([Sotr_ID],[Sobesedovanie],[Dolznost],[Grafik_Raboti],[Sbor_Documentov],[Isp_Srok],[Logical_Delete]) " + "values (" + idst + ", 0,0,0,0,0,0)"; Program.SqlConnection.Open(); //Изменение тех что в процессе на ожидании command.ExecuteNonQuery(); Program.SqlConnection.Close(); } var sta = db.status_isp_sroka.Where(s => s.ID_St == isp_Sroki.Status_ID).FirstOrDefault(); var pos = db.Posit_Responsibilities.Where(s => s.ID_Pos_Res == isp_Sroki.Pos_Res_ID).FirstOrDefault(); EmailTo.MySendMail("" + "Приветствуем, " + pos.Sotrs.Full + "! <br>Вы, " + "проходите испытательный срок в нашей компании ООО \"Си эМ эС\", на должность " + pos.Positions.Naim_Posit + "." + "<br />Ваш статус прохождения изменен на " + sta.Name_St, pos.Sotrs.Email, "Компания CMS", "Прохождение испытательного срока"); } else { if (step_count != null && step_count != 0) { command.CommandText = "update [dbo].[Steps] set [Isp_Srok] = 'true' where Sotr_ID = " + idst; Program.SqlConnection.Open(); //Изменение тех что в процессе на ожидании command.ExecuteNonQuery(); Program.SqlConnection.Close(); } else { command.CommandText = "Insert into dbo.Steps ([Sotr_ID],[Sobesedovanie],[Dolznost],[Grafik_Raboti],[Sbor_Documentov],[Isp_Srok],[Logical_Delete]) " + "values (" + idst + ", 0,0,0,0,1,0)"; Program.SqlConnection.Open(); //Изменение тех что в процессе на ожидании command.ExecuteNonQuery(); Program.SqlConnection.Close(); } var pos = db.Posit_Responsibilities.Where(s => s.ID_Pos_Res == isp_Sroki.Pos_Res_ID).FirstOrDefault(); EmailTo.MySendMail("" + "Приветствуем, " + pos.Sotrs.Full + "! <br>Поздравляем, " + "Вы прошли испытательный срок в нашей компании ООО \"Си эМ эС\", на должность " + pos.Positions.Naim_Posit + ".", pos.Sotrs.Email, "Компания CMS", "Прохождение испытательного срока"); } //сохранение изменений await db.SaveChangesAsync(); return(Redirect(Session["perehod"].ToString())); } //Список штатного состава ViewBag.Pos_Res_ID = new SelectList(db.Posit_Responsibilities, "ID_Pos_Res", "ID_Pos_Res", isp_Sroki.Pos_Res_ID); //Список статусов ViewBag.Status_ID = new SelectList(db.status_isp_sroka, "ID_St", "Name_St", isp_Sroki.Status_ID); return(View(isp_Sroki)); } else { return(Redirect("/Error/NotRight")); } }
public BsixMailer EmailTo(params string[] EmailTo) { this.To = EmailTo.ToList(); return(this); }
public async Task <IActionResult> Revoke() { var user = _authHelper.User(); var username = HttpContext.Session.Get("username"); var password = (string)Request.Form["password"]; var ldap = _ldapservice.Login(username, password); var requestId = Convert.ToInt32(Request.Form["request_id"]); var reason = (string)Request.Form["reason-cancel"]; var revoked = _repository.signer_requests.First(o => o.id == requestId); revoked.status = "REVOKED"; revoked.reason = reason; _repository.SaveChanges(); // var request = new MailRequest{ // ToEmail = "*****@*****.**", // Body = "Test", // Subject = "Keren Amat" // }; // await _mailService.SendEmailAsync(request); var email_to = new EmailTo { To = new List <String>(), Cc = new List <String>() }; var signer_file = _repository.signer_file.FirstOrDefault(o => o.request_id == requestId); var category = _repository.signer_m_docs_category.FirstOrDefault(o => o.category_id == signer_file.category_id); var documentLink = _appConfig.APP_URL + "/SignerDocument/Open/" + signer_file.document_key; var emails = _repository.signer_workflow.Where(o => o.request_id == requestId && o.status == "APPROVED").Select(o => o.email).ToList(); foreach (var email in emails) { email_to.To.Add(email); } var employee = _repository.signer_employee.FirstOrDefault(o => o.employee_id == user.employee_id); var send = await _mailService.Send(email_to, "[ONESIGN] Document Cancel by " + employee.employee_name, new MailBasic { Title = "Signing invitation declined.", SubTitle = "Click the link below to view document.", ButtonText = "View Document", ButtonLink = documentLink, Message = employee.employee_email + " has cancel the document you had signed. " + "<br><br> Request ID : 000000" + requestId + "<br>Requestor : " + employee.employee_name + " </br>Document Name : " + signer_file.name + "<br> Category : " + category.category_name + "<br><br>Reason : <br>" + reason.Replace("\r\n", "<br/>") + "<br><br>Click the link below to view the document.<br><br>Cheers!<br>" + _appConfig.APP_NAME + " Team" }, "withbutton"); var resp = _commonHelper.Responder("success", "Alright!", "Document successfully saved.", "redirect('" + _commonHelper.Env.GetValue <string>("APP_URL") + "/SignerDocument/DocsMonitoring');", true, "swal"); return(Content(JsonConvert.SerializeObject(resp), "application/json")); }