private void SetSentimentProps(EmailInformation email) { if (email.SentimentScore > 0.75) { email.SentimentCss = "positive"; email.SentimentText = "Really positive"; return; } if (email.SentimentScore > 0.5 && email.SentimentScore <= 0.75) { email.SentimentCss = "mild-positive"; email.SentimentText = "Somewhat positive"; return; } if (email.SentimentScore == 0.5) { email.SentimentCss = "neutral"; email.SentimentText = "Neutral"; return; } if (email.SentimentScore < 0.5 && email.SentimentScore > 0.25) { email.SentimentCss = "mild-negative"; email.SentimentText = "Mildly negative"; return; } email.SentimentCss = "negative"; email.SentimentText = "Really negative"; }
/// <summary> /// 系统发送 站内信、邮件、短信 /// </summary> /// <param name="title">标题</param> /// <param name="content">内容</param> /// <param name="recUserId">收件人</param> /// <param name="sendFlag">发送方式 /// <para>0:站内信;</para> /// <para>1:邮件;</para> /// <para>2:短信;</para> /// <para>11:站内信、邮件;</para> /// <para>22:站内信、短信;</para> /// <para>33:邮件、短信;</para> /// <para>99:站内信、邮件、短信;</para> /// </param> public static void SendMessage(string title, string content, int[] recUserId, int sendFlag, int tenantId) { if (recUserId.Length == 0 || string.IsNullOrWhiteSpace(title) || string.IsNullOrWhiteSpace(content)) { return; } if (sendFlag == 0 || sendFlag == 99 || sendFlag == 11 || sendFlag == 22) { SendUserMessage(title, content, recUserId, tenantId); } if (sendFlag == 1 || sendFlag == 99 || sendFlag == 11 || sendFlag == 33) { var userlist = GetUserList(recUserId); EmailInformation emailinf = new EmailInformation(); emailinf.ToList = userlist.Where(p => !string.IsNullOrWhiteSpace(p.Email)).Select(p => p.Email).ToList(); emailinf.SendFlag = 1; emailinf.Subject = title; //emailinf.mailName = mailName; emailinf.Context = content.Replace("/[urllanguage]", "http://" + System.Web.HttpContext.Current.Request.Url.Authority + "/" + System.Threading.Thread.CurrentThread.CurrentCulture.ToString()); emailinf.UserName = Email_Username; emailinf.PassWord = Email_Password; //接收邮件服务器 emailinf.From = Email_From; //发送邮件服务器 emailinf.Host = Email_Host; //端口 emailinf.IPort = Convert.ToInt32(Email_IPort); new RabbitMQHelper(Rabbit_EmailAddress, Rabbit_userName, Rabbit_password, Rabbit_SendEmail, Rabbit_Emailqueue).SendMessage(emailinf); } if (sendFlag == 2 || sendFlag == 99 || sendFlag == 22 || sendFlag == 33) { ;//发送短信 } }
public EmailResult SendEmail(string attachmentLocation, EmailInformation emailInfo) { MailMessage msg = new MailMessage(from: emailInfo.FromEmail, to: emailInfo.ToEmail, subject: "Your parking pass", body: null); msg.Attachments.Add(new Attachment(attachmentLocation)); MimeMessage mimeMsg = MimeMessage.CreateFromMailMessage(msg); var raw = Base64UrlEncode(mimeMsg.ToString()); var gmailMessage = new Message { Raw = raw }; var gmailSendRequest = gmailService.Users.Messages.Send(gmailMessage, "me"); try { Message gmailMessageSent = gmailSendRequest.Execute(); return(new EmailResult { Success = true }); } catch (Exception e) { return(new EmailResult { Success = false, ErrorMessage = e.Message }); } }
public async Task <ActionResult> SendEmailToCustomer(EmailInformation emailInformation) { var currentUsername = User.Identity.Name; var currentUser = db.Users.Where(m => m.UserName == currentUsername).Select(m => m.Id).FirstOrDefault(); var employee = db.Employees.Where(m => m.ApplicationUserId == currentUser).Select(m => m.Id).FirstOrDefault(); var dogPickup = db.MyPickups.Where(m => m.EmployeeId == employee).OrderByDescending(m => m.Id).FirstOrDefault(); var dogOwner = db.Dogs.Where(d => d.Id == dogPickup.DogId).Select(d => d.CustomerId).FirstOrDefault(); var customer = db.Customers.Where(c => c.Id == dogOwner).FirstOrDefault(); var customerEmail = customer.Email; var customerFirstName = customer.FirstName; var customerLastName = customer.LastName; var currentEmployee = db.Employees.Where(m => m.ApplicationUserId == currentUser).FirstOrDefault(); var currentEmployeeEmail = currentEmployee.Email; var currentEmployeeFirstName = currentEmployee.FirstName; var currentEmployeeLastName = currentEmployee.LastName; var apiKey = Environment.GetEnvironmentVariable("SENDGRID_API_KEY"); var client = new SendGridClient(apiKey); var subject = emailInformation.Subject; var message = emailInformation.Message; var msg = new SendGridMessage() { From = new EmailAddress(currentEmployeeEmail, (currentEmployeeFirstName + "" + currentEmployeeLastName)), Subject = subject, PlainTextContent = "Elmwood is the best place in the world to me", HtmlContent = message }; msg.AddTo(new EmailAddress(customerEmail, (customerFirstName + customerLastName))); var response = await client.SendEmailAsync(msg); return(View()); }
protected void Page_Load(object sender, EventArgs e) { string url = Request.Url.ToString(); ArrayList list = new ArrayList(); string str = string.Empty; if (Request.HttpMethod == "GET") { if (url.IndexOf("status") != -1) { string query = Request.QueryString["status"].ToString(); if (query.ToUpper() == "ALL") { DataSet ds = SqlHelper.GetEmailInformation(); int count = ds.Tables[0].Rows.Count; for (int i = 0; i < count; i++) { EmailInformation email = new EmailInformation(); email.Level = ds.Tables[0].Rows[i]["level"].ToString(); email.EmailAddress = ds.Tables[0].Rows[i]["emailAddress"].ToString(); list.Add(email); } } } } else if (Request.HttpMethod == "POST") { string oper = Request.Form["oper"].ToString(); if (oper == "edit") { string level = Request.Form["Level"].ToString(); string emailAddress = Request.Form["EmailAddress"].ToString(); SqlHelper.UpdateEmailInformation(level, emailAddress); } else if (oper == "del") { string level = Request.Form["name"].ToString(); SqlHelper.DeleteEmailInformation(level); } else if (oper == "add") { string level = Request.Form["Level"].ToString(); string emailAddress = Request.Form["EmailAddress"].ToString(); SqlHelper.InsertEmailInformation(level, emailAddress); } } JavaScriptSerializer json = new JavaScriptSerializer(); str = json.Serialize(list); Response.Write(str); Response.End(); return; }
public Attachment CreateAttachment(EmailInformation emailInformation) { var eventToSend = emailInformation.CurrentEvent; var startDate = eventToSend.StartDate.GetValueOrDefault().ToUniversalTime(); var endDate = startDate.Add(TimeSpan.FromHours(4)); //Build attachment var stringBuilder = new StringBuilder(); stringBuilder.AppendLine("BEGIN:VCALENDAR"); stringBuilder.AppendLine("PRODID:-//Invitation"); stringBuilder.AppendLine("VERSION:2.0"); stringBuilder.AppendLine("METHOD:REQUEST"); stringBuilder.AppendLine("BEGIN:VEVENT"); stringBuilder.AppendLine("SUMMARY;LANGUAGE=en-us:" + eventToSend.Title); stringBuilder.AppendLine(String.Format("DTSTART:{0:yyyyMMddTHHmmssZ}", startDate)); //Verify if the time is local time stringBuilder.AppendLine(String.Format("DTSTAMP:{0:yyyyMMddTHHmmssZ}", DateTime.UtcNow)); stringBuilder.AppendLine(String.Format("DTEND:{0:yyyyMMddTHHmmssZ}", endDate)); stringBuilder.AppendLine(String.Format("LOCATION: {0}", eventToSend.Location)); stringBuilder.AppendLine(String.Format("UID:{0}", Guid.NewGuid())); stringBuilder.AppendLine(String.Format("DESCRIPTION:{0}", eventToSend.Description)); stringBuilder.AppendLine(String.Format("X-ALT-DESC;FMTTYPE=text/html:{0}", eventToSend.Title)); stringBuilder.AppendLine(String.Format("SUMMARY:{0}", eventToSend.Title)); stringBuilder.AppendLine(String.Format("ORGANIZER:MAILTO:{0}", emailInformation.OrganizerEmail)); //stringBuilder.AppendLine(string.Format("ATTENDEE;CN=\"{0}\";RSVP=TRUE:mailto:{1}", email.SenderLastName, email.From)); stringBuilder.AppendLine("BEGIN:VALARM"); stringBuilder.AppendLine("TRIGGER:-PT15M"); stringBuilder.AppendLine("ACTION:DISPLAY"); stringBuilder.AppendLine("DESCRIPTION:Reminder"); stringBuilder.AppendLine("END:VALARM"); stringBuilder.AppendLine("END:VEVENT"); stringBuilder.AppendLine("END:VCALENDAR"); //store it in Memory stream var bytes = Encoding.ASCII.GetBytes(stringBuilder.ToString()); MemoryStream stream = null; using (stream) { stream = new MemoryStream(bytes); } var contentType = new ContentType("text/calender"); contentType.Parameters.Add("method", "REQUEST"); contentType.Parameters.Add("name", String.Format("{0}'s_Invitation.ics", eventToSend.Title)); //create attachment var attachment = new Attachment(stream, contentType); //return Attachment return(attachment); }
public static void ScheduleParticipantListEmail(EmailInformation emailInfo, DateTime listDate) { const string jobDescription = "Send list"; var currentEvent = emailInfo.CurrentEvent; RemoveOldListJob(currentEvent, jobDescription); var listJobId = BackgroundJob.Schedule(() => PostalEmailManager.SendListEmail(emailInfo, new ParticipantListEmail()), listDate); AddJobsIntoEvent(listJobId, currentEvent.Id, jobDescription); }
public async Task UpdateMessageAsync(EmailInformation emailMsg) { await EnsureSetup(); //var query = _client.CreateDocumentQuery<EmailInformation>(DocumentCollectionUri) // .Where(f => f.id == emailMsg.id).FirstOrDefault(); //if (query != null) //{ await _client.UpsertDocumentAsync(DocumentCollectionUri, emailMsg); //} }
public void WhenSmtpClientFailsToSendThenErrorStatusReturned() { using (ShimsContext.Create()) { var emailInfo = new EmailInformation { }; ShimMailAddress.ConstructorStringString = (@this, addr, name) => { new ShimMailAddress(@this); }; int emailSendCalled = 0; ShimSmtpClient.Constructor = @this => { var shim = new ShimSmtpClient(@this); shim.SendMailMessage = e => { ++emailSendCalled; throw new SmtpException("Error sending email."); }; }; ShimMailMessage.Constructor = @this => { var msg = new ShimMailMessage(@this); msg.FromSetMailAddress = mailAddr => { }; msg.ToGet = () => new MailAddressCollection(); msg.SubjectSetString = subject => { }; msg.BodySetString = bodyText => { }; msg.IsBodyHtmlSetBoolean = isHtml => { }; }; var sendEmail = new SendEmail(); var status = sendEmail.Send(emailInfo); Assert.AreEqual(1, emailSendCalled); Assert.IsNotNull(status); Assert.AreEqual(false, status.WasSent); Assert.AreEqual("Error sending email.", status.ErrorMessage); } }
/// <summary> /// 系统发送 站内信、邮件、短信 /// </summary> /// <param name="title">标题</param> /// <param name="content">内容</param> /// <param name="recUserId">收件人</param> /// <param name="sendFlag">发送方式 /// <para>0:站内信;</para> /// <para>1:邮件;</para> /// <para>2:短信;</para> /// <para>11:站内信、邮件;</para> /// <para>22:站内信、短信;</para> /// <para>33:邮件、短信;</para> /// <para>99:站内信、邮件、短信;</para> /// </param> public static void SendMessage(List <SysIinstationMessage> messageList, int sendFlag, int tenantId) { if (messageList.Count == 0) { return; } if (sendFlag == 0 || sendFlag == 99 || sendFlag == 11 || sendFlag == 22) { SendUserMessage(messageList, tenantId); } if (sendFlag == 1 || sendFlag == 99 || sendFlag == 11 || sendFlag == 33) { List <int> userIds = new List <int>(); foreach (var item in messageList) { userIds.AddRange(item.recUserId); } var userlist = GetUserList(userIds.Distinct()); //发送邮件 foreach (var item in messageList) { EmailInformation emailinf = new EmailInformation(); emailinf.ToList = userlist.Where(p => item.recUserId.Contains(p.UserId) && (!string.IsNullOrWhiteSpace(p.Email))).Select(p => p.Email).ToList(); emailinf.SendFlag = 1; emailinf.Subject = item.title; //emailinf.mailName = mailName; emailinf.Context = item.content.Replace("/[urllanguage]", "http://" + System.Web.HttpContext.Current.Request.Url.Authority + "/" + System.Threading.Thread.CurrentThread.CurrentCulture.ToString()); emailinf.UserName = Email_Username; emailinf.PassWord = Email_Password; //接收邮件服务器 emailinf.From = Email_From; //发送邮件服务器 emailinf.Host = Email_Host; //端口 emailinf.IPort = Convert.ToInt32(Email_IPort); new RabbitMQHelper(Rabbit_EmailAddress, Rabbit_userName, Rabbit_password, Rabbit_SendEmail, Rabbit_Emailqueue).SendMessage(emailinf); } } if (sendFlag == 2 || sendFlag == 99 || sendFlag == 22 || sendFlag == 33) { ;//发送短信 } }
public ActionResult DeleteConfirmed(int id) { var user = _service.GetUser(); var @event = _db.Events.Include(ev => ev.Participants) .FirstOrDefault(e => (e.Id == id) && (e.SchedulerUserId == UserId)); //if event hasn't occured notify users of cancellation if (_service.EventHasNotPassed(@event)) { var currentEvent = _db.Events.Where(e => e.Id == @event.Id) .Include(e => e.Participants).FirstOrDefault(); if (currentEvent == null) { return(View("error")); } var participants = currentEvent.Participants.ToList(); foreach (var participant in participants) { var emailInfo = new EmailInformation { CurrentEvent = @event, OrganizerEmail = user.UserName, OrganizerName = user.FirstName, EmailSubject = " cancellation", ParticipantEmail = participant.Email, ParticipantId = participant.Id }; PostalEmailManager.SendEmail(emailInfo, new CancellationEmail()); } //Remove Scheduled emails for deleted Event JobManager.RemoveScheduledJobs(currentEvent); } _db.Events.Remove(@event); _db.SaveChanges(); return(RedirectToAction("Index")); }
internal EmailInformation BuildWatchedListProductEmail(User user, List watchedList, User listUser, UserAlert alert, MonitoredProduct newBestDealProduct, decimal newBestDealPrice) { var emailInformation = new EmailInformation(); emailInformation.RecipientAddress = user.Email; var productUrl = new Uri(newBestDealProduct.Uri); var manipulatedUrl = this.GetManipulatedUrl(productUrl); var subject = GetProductTitle(user, alert); emailInformation.Parameters = new Dictionary <string, string> { { "subject", user.Settings.CorrespondenceLanguage == "en" ? $"Price alert from PriceWise: The price of {subject} in a list you are watching changed!" : $"Alerte de prix de PriceWise: Le prix de {subject} dans une liste que vous surveillez a changé!" }, { "merge_email", user.Email }, { "merge_listUserName", listUser.FirstName }, { "merge_firstname", user.FirstName ?? string.Empty }, { "merge_productName", alert.Title ?? string.Empty }, { "merge_previousPrice", alert.BestCurrentDeal.Price.ToString(CultureInfo.InvariantCulture) }, { "merge_newPrice", newBestDealPrice.ToString(CultureInfo.InvariantCulture) }, { "merge_alertId", alert.Id }, { "merge_listId", watchedList.Id }, { "merge_productUrl", manipulatedUrl.AbsoluteUri }, { "merge_productDomain", productUrl.Authority }, { "merge_imageUrl", alert.ImageUrl.IsBase64Url() ? string.Empty : alert.ImageUrl } }; var changeQualifier = "Drop"; if (alert.BestCurrentDeal.Price < newBestDealPrice) { changeQualifier = "Raise"; } emailInformation.TemplateName = $"WatchedListPrice{changeQualifier}_Unsubscribe_{user.Settings.CorrespondenceLanguage}"; return(emailInformation); }
public async Task <IActionResult> SaveEmailInformations([FromBody] ListEmailInformationViewModel model) { if (await _context.EmailInformations.AnyAsync(x => x.UserId == model.UserId)) { var emailUserDetected = await _context.EmailInformations.Where(x => x.UserId == model.UserId).FirstOrDefaultAsync(); emailUserDetected.Message = model.ObjectReference.Message; emailUserDetected.Sender = model.ObjectReference.Sender; emailUserDetected.SenderAt = model.ObjectReference.SenderAt; emailUserDetected.Subject = model.ObjectReference.Subject; emailUserDetected.UserId = model.UserId; emailUserDetected.Index = model.ObjectReference.Index; await _context.SaveChangesAsync(); return(Ok()); } else { var emailInformation = new EmailInformation() { Message = model.ObjectReference.Message, Sender = model.ObjectReference.Sender, SenderAt = model.ObjectReference.SenderAt, Subject = model.ObjectReference.Subject, UserId = model.UserId, Index = model.ObjectReference.Index }; await _context.EmailInformations.AddAsync(emailInformation); await _context.SaveChangesAsync(); return(Ok()); } //var booleanTable = await _context.BooleanTables.Where(x => x.UserId == model.UserId).FirstOrDefaultAsync(); //booleanTable.Email = true; }
/// <summary> /// 系统发送 站内信、邮件、短信 /// </summary> /// <param name="title">标题</param> /// <param name="content">内容</param> /// <param name="recUserId">收件人</param> /// <param name="sendFlag">发送方式 /// <para>0:站内信;</para> /// <para>1:邮件;</para> /// <para>2:短信;</para> /// <para>11:站内信、邮件;</para> /// <para>22:站内信、短信;</para> /// <para>33:邮件、短信;</para> /// <para>99:站内信、邮件、短信;</para> /// </param> /// <param name="tenantId"></param> public static void SendMessage(string title, string content, int[] recUserId, int sendFlag, int tenantId) { if (recUserId.Length == 0 || string.IsNullOrWhiteSpace(title) || string.IsNullOrWhiteSpace(content)) { return; } if (sendFlag == 0 || sendFlag == 99 || sendFlag == 11 || sendFlag == 22) { //1: //SendUserMessage(title, content, recUserId, tenantId); //2: //new UserMessageManager().AddMessage(title, content, recUserId, 0, tenantId); //3: var messageContent = new SysUserMessageContent() { Title = title, MessageContent = content, CreateTime = DateTime.Now, TenantId = tenantId }; messageContent.MessageId = _dataAccess.AddEntity(messageContent); var list = new List <SysUserMessage>(); for (int i = 0; i < recUserId.Length; i++) { if (recUserId[i] > 0) { list.Add(new SysUserMessage { MessageId = messageContent.MessageId, SendStatus = 0, RecStatus = 0, SendUserId = 0, RecUserId = recUserId[i], TenantId = tenantId }); } } _dataAccess.AddEntities(list); } if (sendFlag == 1 || sendFlag == 99 || sendFlag == 11 || sendFlag == 33) { var userlist = GetUserList(recUserId); EmailInformation emailinf = new EmailInformation(); emailinf.ToList = userlist.Where(p => !string.IsNullOrWhiteSpace(p.Email)).Select(p => p.Email).ToList(); emailinf.SendFlag = 1; emailinf.Subject = title; //emailinf.mailName = mailName; //emailinf.Context = content.Replace("/[urllanguage]", "http://" + System.Web.HttpContext.Current.Request.Url.Authority); emailinf.Context = content.Replace("/[urllanguage]", ""); emailinf.UserName = Email_Username; if (System.Configuration.ConfigurationManager.AppSettings["ConfigEncrypt"] == "True") { emailinf.PassWord = Extensions.EncryptHelper.Decrypto(Email_Password); } else { emailinf.PassWord = Email_Password; } //接收邮件服务器 emailinf.From = Email_From; //发送邮件服务器 emailinf.Host = Email_Host; //端口 emailinf.IPort = Convert.ToInt32(Email_IPort); RibbitMQProvider.SendMessage(emailinf, "sendEmail"); } //if (sendFlag == 2 || sendFlag == 99 || sendFlag == 22 || sendFlag == 33) //;发送短信 }
public void WhenSmtpClientSendRequestedThenMailMessageValuesArePopulatedCorrectly() { using (ShimsContext.Create()) { var emailInfo = new EmailInformation { FromAddress = "*****@*****.**", FromName = "From Name", ToAddress = "*****@*****.**", ToName = "To Name", Subject = "Email Subject", MessageText = "Email Body", IsHtmlMessage = false, }; int mailAddrCalled = 0; ShimMailAddress.ConstructorStringString = (@this, addr, name) => { new ShimMailAddress(@this); switch (mailAddrCalled++) { case 0: Assert.AreEqual("*****@*****.**", addr); Assert.AreEqual("From Name", name); break; case 1: Assert.AreEqual("*****@*****.**", addr); Assert.AreEqual("To Name", name); break; } }; ShimSmtpClient.Constructor = @this => { var shim = new ShimSmtpClient(@this); shim.SendMailMessage = e => { }; }; int fromCalled = 0; int toCalled = 0; int subjectCalled = 0; int bodyCalled = 0; int isHtmlCalled = 0; ShimMailMessage.Constructor = @this => { var msg = new ShimMailMessage(@this); msg.FromSetMailAddress = mailAddr => { ++fromCalled; }; msg.ToGet = () => { ++toCalled; return new MailAddressCollection(); }; msg.SubjectSetString = subject => { Assert.AreEqual("Email Subject", subject); ++subjectCalled; }; msg.BodySetString = bodyText => { Assert.AreEqual("Email Body", bodyText); ++bodyCalled; }; msg.IsBodyHtmlSetBoolean = isHtml => { Assert.AreEqual(false, isHtml); ++isHtmlCalled; }; }; var sendEmail = new SendEmail(); sendEmail.Send(emailInfo); Assert.AreEqual(2, mailAddrCalled); Assert.AreEqual(1, fromCalled); Assert.AreEqual(1, toCalled); Assert.AreEqual(1, subjectCalled); Assert.AreEqual(1, bodyCalled); Assert.AreEqual(1, isHtmlCalled); } }
/// <summary> /// 系统发送 站内信、邮件、短信 /// </summary> /// <param name="messageList"></param> /// <param name="sendFlag">发送方式 /// <para>0:站内信;</para> /// <para>1:邮件;</para> /// <para>2:短信;</para> /// <para>11:站内信、邮件;</para> /// <para>22:站内信、短信;</para> /// <para>33:邮件、短信;</para> /// <para>99:站内信、邮件、短信;</para> /// </param> /// <param name="tenantId"></param> public static void SendMessage(List <SysIinstationMessage> messageList, int sendFlag, int tenantId) { if (messageList.Count == 0) { return; } if (sendFlag == 0 || sendFlag == 99 || sendFlag == 11 || sendFlag == 22) { //1: //SendUserMessage(messageList, tenantId); //2: //var userMessageManager = new UserMessageManager(); //foreach (var item in messageList) //{ // userMessageManager.AddMessage(item.title, item.content, item.recUserId, 0, tenantId); //} //3: var list = new List <SysUserMessage>(); foreach (var item in messageList) { var messageContent = new SysUserMessageContent() { Title = item.title, MessageContent = item.content, CreateTime = DateTime.Now, TenantId = tenantId }; messageContent.MessageId = _dataAccess.AddEntity(messageContent); for (int i = 0; i < item.recUserId.Length; i++) { if (item.recUserId[i] > 0) { list.Add(new SysUserMessage { MessageId = messageContent.MessageId, SendStatus = 0, RecStatus = 0, SendUserId = 0, RecUserId = item.recUserId[i], TenantId = tenantId }); } } } _dataAccess.AddEntities(list); } if (sendFlag == 1 || sendFlag == 99 || sendFlag == 11 || sendFlag == 33) { List <int> userIds = new List <int>(); foreach (var item in messageList) { userIds.AddRange(item.recUserId); } var userlist = GetUserList(userIds.Distinct()); var ep = Email_Password; if (System.Configuration.ConfigurationManager.AppSettings["ConfigEncrypt"] == "True") { ep = Extensions.EncryptHelper.Decrypto(Email_Password); } //发送邮件 foreach (var item in messageList) { EmailInformation emailinf = new EmailInformation(); emailinf.ToList = userlist.Where(p => item.recUserId.Contains(p.UserId) && (!string.IsNullOrWhiteSpace(p.Email))).Select(p => p.Email).ToList(); emailinf.SendFlag = 1; emailinf.Subject = item.title; //emailinf.mailName = mailName; emailinf.Context = item.content.Replace("/[urllanguage]", "http://" + System.Web.HttpContext.Current.Request.Url.Authority + "/" + System.Threading.Thread.CurrentThread.CurrentCulture.ToString()); emailinf.UserName = Email_Username; emailinf.PassWord = ep; //接收邮件服务器 emailinf.From = Email_From; //发送邮件服务器 emailinf.Host = Email_Host; //端口 emailinf.IPort = Convert.ToInt32(Email_IPort); RibbitMQProvider.SendMessage(emailinf, "sendEmail"); } } //if (sendFlag == 2 || sendFlag == 99 || sendFlag == 22 || sendFlag == 33) // ;发送短信 }
public void WhenSmtpClientSendRequestedThenMailMessageValuesArePopulatedCorrectly() { using (ShimsContext.Create()) { var emailInfo = new EmailInformation { FromAddress = "*****@*****.**", FromName = "From Name", ToAddress = "*****@*****.**", ToName = "To Name", Subject = "Email Subject", MessageText = "Email Body", IsHtmlMessage = false, }; int mailAddrCalled = 0; ShimMailAddress.ConstructorStringString = (@this, addr, name) => { new ShimMailAddress(@this); switch (mailAddrCalled++) { case 0: Assert.AreEqual("*****@*****.**", addr); Assert.AreEqual("From Name", name); break; case 1: Assert.AreEqual("*****@*****.**", addr); Assert.AreEqual("To Name", name); break; } }; ShimSmtpClient.Constructor = @this => { var shim = new ShimSmtpClient(@this); shim.SendMailMessage = e => { }; }; int fromCalled = 0; int toCalled = 0; int subjectCalled = 0; int bodyCalled = 0; int isHtmlCalled = 0; ShimMailMessage.Constructor = @this => { var msg = new ShimMailMessage(@this); msg.FromSetMailAddress = mailAddr => { ++fromCalled; }; msg.ToGet = () => { ++toCalled; return(new MailAddressCollection()); }; msg.SubjectSetString = subject => { Assert.AreEqual("Email Subject", subject); ++subjectCalled; }; msg.BodySetString = bodyText => { Assert.AreEqual("Email Body", bodyText); ++bodyCalled; }; msg.IsBodyHtmlSetBoolean = isHtml => { Assert.AreEqual(false, isHtml); ++isHtmlCalled; }; }; var sendEmail = new SendEmail(); sendEmail.Send(emailInfo); Assert.AreEqual(2, mailAddrCalled); Assert.AreEqual(1, fromCalled); Assert.AreEqual(1, toCalled); Assert.AreEqual(1, subjectCalled); Assert.AreEqual(1, bodyCalled); Assert.AreEqual(1, isHtmlCalled); } }
public ActionResult SendEventsInvitation([Bind(Include = "ParticipantsEmails,EventDate,EventId,SendRemainder,ReminderDate,ListDate")] InvitationViewModel model) { var id = model.EventId; if (!ModelState.IsValid) { return(View(ReturnInvitationModel(id))); } //ToDo: change list and remainder dates to swiss time to be used for sending email // get event from database var eventForInvitation = GetEvent(id); eventForInvitation.ListDate = // ReSharper disable once PossibleInvalidOperationException ConvertDateTime.ToSwissTimezone(TimeZoneInfo.ConvertTimeToUtc((DateTime)model.ListDate)); if (model.ReminderDate != null) { eventForInvitation.ReminderDate = ConvertDateTime.ToSwissTimezone(TimeZoneInfo.ConvertTimeToUtc((DateTime)model.ReminderDate)); Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("{ From Invitation controller sending invitation } Remainder date is on " + eventForInvitation.ReminderDate)); } /* * This is used to check time on the server * when this is deployed */ Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("{ From Invitation controller sending invitation } List date is on " + eventForInvitation.ListDate)); //Check if invitations can still be sent var notPassed = _service.EventHasNotPassed(eventForInvitation); if (!notPassed) { return(View("_CantInvite", eventForInvitation)); } var unsavedContacts = new UnsavedContactViewModel(); EmailInformation emailInfo = null; var allSaved = false; var contacts = new List <Contact>(); var emails = new List <EmailInformation>(); //loop through emails var emailList = model.ParticipantsEmails.Split(',').ToList(); foreach (var participantEmail in emailList) { var email = _service.RemoveBrackets(participantEmail); //save new participant SaveParticipantInDb(email, eventForInvitation); #region Create and send Email emailInfo = ComposeEmailInfo(eventForInvitation, email); emails.Add(emailInfo); //Send Invitation Email try { PostalEmailManager.SendEmail(emailInfo, new InvitationEmail()); //todo: this is to be removed before deployment for production Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("Email sent to " + emailInfo.ParticipantEmail)); if (model.SendRemainder) { var remainderDate = Service.GetRemanderDate(eventForInvitation); JobManager.ScheduleRemainderEmail(emails, remainderDate); //todo: this is to be removed before deployment for production Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("remainder is set at " + remainderDate)); } } catch (Exception exception) { Elmah.ErrorSignal.FromCurrentContext().Raise(exception); return(RedirectToAction("Error")); } #endregion #region after sending email, save unsaved contacts var contactEmails = _contactsController.GetUserContacts(UserId); allSaved = contactEmails.Any(c => c.Email == email); if (allSaved) { continue; } var contact = new Contact { Email = email }; contacts.Add(contact); unsavedContacts.Contacts = contacts; #endregion } #region Scheduling List email // start participant list summary scheduler var listDate = Service.GetListDate(eventForInvitation); JobManager.ScheduleParticipantListEmail(emailInfo, listDate); #endregion //redirect to details if all contacts are saved if (allSaved) { Response.Cookies.Add(new HttpCookie("successCookie", "Action is completed successfully")); return(RedirectToAction("Details", "Events", new { id })); } //Let user save his contacts return view with list of unsaved contacts unsavedContacts.EventId = eventForInvitation.Id; TempData["model"] = unsavedContacts; //Pass list to SaveEmails action return(RedirectToAction("SaveEmails")); }
public ActionResult Edit([Bind(Include = "Id,Title,Location,Description,StartDate,EndDate,ReminderDate,ListDate,SchedulerUserId")] Event eventToEdit, int?id) { var results = eventToEdit.StartDate.GetValueOrDefault().CompareTo(eventToEdit.ListDate.GetValueOrDefault()); if (results < 0) { ModelState.AddModelError("dateError", "Enter date before Starting date"); } if (!ModelState.IsValid) { return(View(eventToEdit)); } _db.Entry(eventToEdit).State = EntityState.Modified; _db.SaveChanges(); var remanderDate = Service.GetRemanderDate(eventToEdit); var listDate = Service.GetListDate(eventToEdit); //Remove scheduled jobs of this event JobManager.RemoveScheduledJobs(eventToEdit); #region Send update emails to participants //Get Participants var currentEvent = _db.Events .Where(e => e.Id == eventToEdit.Id) .Include(e => e.Participants) .FirstOrDefault(); if (currentEvent == null) { return(View("Error")); } var participants = currentEvent.Participants.ToList(); var user = _service.GetUser(); EmailInformation emailInfo = null; var emails = new List <EmailInformation>(); //There is no participants if (participants.Count == 0) { return(RedirectToAction("Index")); } foreach (var participant in participants) { var participantId = participant.Id; var detailsUrl = Url.Action("Details", "Response", new RouteValueDictionary(new { id = currentEvent.Id }), "https"); var responseUrl = Url.Action("Response", "Response", new RouteValueDictionary(new { id = currentEvent.Id, pId = participantId }), "https"); emailInfo = new EmailInformation { CurrentEvent = currentEvent, OrganizerName = user.FirstName, OrganizerEmail = user.UserName, ParticipantId = participantId, ParticipantEmail = participant.Email, EmailSubject = " changes.", ResponseUrl = responseUrl, EventDetailsUrl = detailsUrl }; emails.Add(emailInfo); //Notify Participant using postal PostalEmailManager.SendEmail(emailInfo, new EmailInfoChangeEmail()); } #endregion //Schedule remainders only when there is a remainder date if (eventToEdit.ReminderDate != null) { JobManager.ScheduleRemainderEmail(emails, remanderDate); } //Schedule new emails for edited Job JobManager.ScheduleParticipantListEmail(emailInfo, listDate); //JobManager.AddJobsIntoEvent(eventToEdit.Id,"Send List"); return(RedirectToAction("Index")); }