protected override void Execute(CodeActivityContext executionContext) { ITracingService tracer = executionContext.GetExtension <ITracingService>(); IWorkflowContext context = executionContext.GetExtension <IWorkflowContext>(); IOrganizationServiceFactory serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>(); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); try { EntityReference emailToSend = EmailToSend.Get(executionContext); SendEmailRequest request = new SendEmailRequest { EmailId = emailToSend.Id, TrackingToken = string.Empty, IssueSend = true }; SendEmailResponse response = (SendEmailResponse)service.Execute(request); bool emailSent = (response != null); EmailSent.Set(executionContext, emailSent); } catch (Exception ex) { tracer.Trace("Exception: {0}", ex.ToString()); } }
public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter) { if (!IsEnabled(logLevel)) { return; } // Create the email body var exceptionType = exception?.GetType()?.Name ?? "Error"; var truncatedMsg = exception?.Message?.Truncate(50, appendEllipses: true); var subjectText = $"{_provider.InstallationIdentifier ?? "Tellma ERP"}: Unhandled {exceptionType}: {truncatedMsg}"; var bodyText = $@" {formatter(state, exception)} --- Stack Trace --- {exception}"; // Create the email var email = new EmailToSend(_provider.EmailAddress) { Subject = subjectText, Body = Htmlify(bodyText), }; // Fire and forget the email (no need to await email logging) var _ = TrySendEmail(email); }
protected override void ExecuteCrmWorkFlowActivity(CodeActivityContext context, LocalWorkflowContext localContext) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (localContext == null) { throw new ArgumentNullException(nameof(localContext)); } EntityReference emailToSend = EmailToSend.Get(context); EntityReference recipientBusinessUnit = RecipientBusinessUnit.Get(context); bool includeChildren = IncludeChildren.Get(context); bool sendEmail = SendEmail.Get(context); List <Entity> ccList = new List <Entity>(); Entity email = RetrieveEmail(localContext.OrganizationService, emailToSend.Id); if (email == null) { UsersAdded.Set(context, 0); return; } //Add any pre-defined recipients specified to the array foreach (Entity activityParty in email.GetAttributeValue <EntityCollection>("cc").Entities) { ccList.Add(activityParty); } EntityCollection buUsers = GetBuUsers(localContext.OrganizationService, recipientBusinessUnit.Id); ccList = ProcessUsers(buUsers, ccList); if (includeChildren) { ccList = DrillDownBu(localContext.OrganizationService, recipientBusinessUnit.Id, ccList); } //Update the email email["cc"] = ccList.ToArray(); localContext.OrganizationService.Update(email); //Send if (sendEmail) { SendEmailRequest request = new SendEmailRequest { EmailId = emailToSend.Id, TrackingToken = string.Empty, IssueSend = true }; localContext.OrganizationService.Execute(request); } UsersAdded.Set(context, ccList.Count); }
public async Task SendEmailAsync(EmailToSend emailToSend) { var smtpAddress = _configuration.GetSection("SMTP_Address").Value; var smtpUsername = _configuration.GetSection("SMTP_Username").Value; var smtpPassword = _configuration.GetSection("SMTP_Password").Value; var smtpPort = _configuration.GetSection("SMTP_Port").Value.ConvertString <int>(); var smtpEnableSSL = _configuration.GetSection("SMTP_UseSSL").Value.ConvertString <bool>(); var receiverEmail = _configuration.GetSection("SMTP_ReceivingEmail").Value; using (var client = new SmtpClient(smtpAddress)) { client.UseDefaultCredentials = false; client.Credentials = new NetworkCredential(smtpUsername, smtpPassword); client.Port = smtpPort; client.EnableSsl = smtpEnableSSL; using (var mailMessage = new MailMessage()) { mailMessage.From = new MailAddress(emailToSend.Email); mailMessage.To.Add(receiverEmail); mailMessage.Body = $"You received email from '{emailToSend.Email}';{Environment.NewLine}{Environment.NewLine}{Environment.NewLine} Subject: {emailToSend.Subject}{Environment.NewLine}{Environment.NewLine}{Environment.NewLine} {emailToSend.Message}"; mailMessage.Subject = "Email from website form"; await client.SendMailAsync(mailMessage); } } }
protected override void ExecuteCrmWorkFlowActivity(CodeActivityContext context, LocalWorkflowContext localContext) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (localContext == null) { throw new ArgumentNullException(nameof(localContext)); } EntityReference emailToSend = EmailToSend.Get(context); SendEmailRequest request = new SendEmailRequest { EmailId = emailToSend.Id, TrackingToken = string.Empty, IssueSend = true }; SendEmailResponse response = (SendEmailResponse)localContext.OrganizationService.Execute(request); bool emailSent = response != null; EmailSent.Set(context, emailSent); }
protected override void ExecuteCrmWorkFlowActivity(CodeActivityContext context, LocalWorkflowContext localContext) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (localContext == null) { throw new ArgumentNullException(nameof(localContext)); } EntityReference emailToSend = EmailToSend.Get(context); Guid roleId = IsGuid(RecipientRole.Get(context)); bool sendEmail = SendEmail.Get(context); if (roleId == Guid.Empty) { throw new InvalidWorkflowException("Invalid Role GUID"); } List <Entity> toList = new List <Entity>(); Entity email = RetrieveEmail(localContext.OrganizationService, emailToSend.Id); if (email == null) { UsersAdded.Set(context, 0); return; } //Add any pre-defined recipients specified to the array foreach (Entity activityParty in email.GetAttributeValue <EntityCollection>("to").Entities) { toList.Add(activityParty); } EntityCollection users = GetRoleUsers(localContext.OrganizationService, roleId); toList = ProcessUsers(users, toList); //Update the email email["to"] = toList.ToArray(); localContext.OrganizationService.Update(email); //Send if (sendEmail) { SendEmailRequest request = new SendEmailRequest { EmailId = emailToSend.Id, TrackingToken = string.Empty, IssueSend = true }; localContext.OrganizationService.Execute(request); } UsersAdded.Set(context, toList.Count); }
protected override void ExecuteCrmWorkFlowActivity(CodeActivityContext context, LocalWorkflowContext localContext) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (localContext == null) { throw new ArgumentNullException(nameof(localContext)); } Guid primaryEntityId = localContext.WorkflowExecutionContext.PrimaryEntityId; EntityReference emailToSend = EmailToSend.Get(context); EntityReference connectionRole = ConnectionRole.Get(context); bool includeOpposite = IncludeOppositeConnection.Get(context); bool sendEmail = SendEmail.Get(context); List <Entity> ccList = new List <Entity>(); Entity email = RetrieveEmail(localContext.OrganizationService, emailToSend.Id); if (email == null) { UsersAdded.Set(context, 0); return; } //Add any pre-defined recipients specified to the array foreach (Entity activityParty in email.GetAttributeValue <EntityCollection>("cc").Entities) { ccList.Add(activityParty); } EntityCollection records = GetConnectedRecords(localContext.OrganizationService, primaryEntityId, connectionRole.Id, includeOpposite); localContext.TracingService.Trace($"Found {records.Entities.Count} records"); ccList = ProcessRecords(localContext.OrganizationService, records, ccList, primaryEntityId); //Update the email email["cc"] = ccList.ToArray(); localContext.OrganizationService.Update(email); //Send if (sendEmail) { SendEmailRequest request = new SendEmailRequest { EmailId = emailToSend.Id, TrackingToken = string.Empty, IssueSend = true }; localContext.OrganizationService.Execute(request); } UsersAdded.Set(context, ccList.Count); }
protected override void Execute(CodeActivityContext executionContext) { ITracingService tracer = executionContext.GetExtension <ITracingService>(); IWorkflowContext context = executionContext.GetExtension <IWorkflowContext>(); IOrganizationServiceFactory serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>(); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); try { EntityReference emailToSend = EmailToSend.Get(executionContext); EntityReference recipientTeam = RecipientTeam.Get(executionContext); bool sendEmail = SendEmail.Get(executionContext); List <Entity> toList = new List <Entity>(); Entity email = RetrieveEmail(service, emailToSend.Id); if (email == null) { UsersAdded.Set(executionContext, 0); return; } //Add any pre-defined recipients specified to the array foreach (Entity activityParty in email.GetAttributeValue <EntityCollection>("to").Entities) { toList.Add(activityParty); } EntityCollection teamMembers = GetTeamMembers(service, recipientTeam.Id); toList = ProcessUsers(service, teamMembers, toList); //Update the email email["to"] = toList.ToArray(); service.Update(email); //Send if (sendEmail) { SendEmailRequest request = new SendEmailRequest { EmailId = emailToSend.Id, TrackingToken = string.Empty, IssueSend = true }; service.Execute(request); } UsersAdded.Set(executionContext, toList.Count); } catch (Exception ex) { tracer.Trace("Exception: {0}", ex.ToString()); } }
private async Task TrySendEmail(EmailToSend email) { try { await _provider.EmailSender().SendAsync(email); } // If we attempt to email an exception and the email sender itself throws // an exception then we just throw our hands up and forget about it. catch { } }
public IHttpActionResult Post(EmailRecipientsModel model) { if (model.SendDate == null) { model.SendDate = DateTime.Now; } if (model.To == null) { model.To = new List <EmailAddress>(); } if (model.UserId != null) { foreach (int recipientid in model.UserId) { var user = db.User.Where(u => u.Id == recipientid).FirstOrDefault(); if (user != null) { model.To.Add(new EmailAddress { Address = user.Email, DisplayName = user.Name }); } } } var recipients = model.To.Select(t => new EmailToSendAddress { EmailAddress = t.Address, DisplayName = t.DisplayName }).ToList(); if (recipients.Count > 0) { var EmailToSend = new EmailToSend { Body = model.Body, Subject = model.Subject, SendDate = model.SendDate.Value, IsSent = false, CreatedDate = DateTime.Now, EmailAddress = recipients, Retry = 0 }; db.EmailToSend.Add(EmailToSend); db.SaveChanges(); return(Ok(EmailToSend.Id)); } return(NotFound()); }
public async Task <IHttpActionResult> SendEmail(EmailToSend emailToSend) { var receiverId = await _emailRepository.GetIdOfReceiver(emailToSend.ReceiverEmail); var emailToCreate = new Email { Subject = emailToSend.Subject, Message = emailToSend.Message, SenderId = emailToSend.SenderId, ReceiverId = receiverId }; await _emailRepository.SendEmail(emailToCreate); return(StatusCode((HttpStatusCode)201)); }
public async Task <IActionResult> SendEmailToAll([FromBody] EmailToSend command) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { //await _accountEmailFactory.SendEmailToAllAsync(command.Subject, command.Body); await _accountEmailFactory.SendEmailToAllUnregisteredAsync(command.Subject, command.Body); return(StatusCode(201)); } catch (Exception e) { return(BadRequest(e.Message)); } }
public IHttpActionResult Post(EmailRecipientModel model) { if (model.SendDate == null) { model.SendDate = DateTime.Now; } if (model.To == null) { model.To = new EmailAddress(); } if (model.UserId != null) { var user = db.User.Where(u => u.Id == model.UserId).FirstOrDefault(); model.To.Address = user.Email; model.To.DisplayName = user.Name; } if (!string.IsNullOrEmpty(model.To.Address)) { var EmailToSend = new EmailToSend { Body = model.Body, Subject = model.Subject, SendDate = model.SendDate.Value, IsSent = false, CreatedDate = DateTime.Now, EmailAddress = new List <EmailToSendAddress>(new EmailToSendAddress[] { new EmailToSendAddress { EmailAddress = model.To.Address, DisplayName = model.To.DisplayName } }), Retry = 0 }; db.EmailToSend.Add(EmailToSend); db.SaveChanges(); return(Ok(EmailToSend.Id)); } return(NotFound()); }
public async Task SendShopEmailAsync(BasketToSend basketToSend) { var emailMessage = new StringBuilder(basketToSend.Message); emailMessage.AppendLine(); foreach (var shopObject in basketToSend.ShopObjects) { emailMessage.AppendLine(shopObject.ToString()); } var emailToSend = new EmailToSend { Email = basketToSend.Email, Name = basketToSend.Name, Subject = basketToSend.Subject, Message = emailMessage.ToString() }; await SendEmailAsync(emailToSend); }
public long SaveEmailToLocal(EmailToSend email) { using (var db = new SQLiteConnection(dbPath)) { try { //EmailToSend objSaveEmail = new EmailToSend(); //objSaveEmail.EmailId = email.EmailId; //objSaveEmail.EmailTemplate = email.EmailTemplate; //objSaveEmail.EmailBody = email.EmailBody; //objSaveEmail.DateTime = email.DateTime; db.Insert(email); return(email.Id); } catch (Exception ex) { throw ex; //exception handling code to go here } } }
public Task SendAsync(EmailToSend email, string fromEmail = null, CancellationToken cancellation = default) { throw new InvalidOperationException(Message); }
/// <summary> /// Helper function. /// </summary> public static (EmailForSave result, IEnumerable <(string name, byte[] content)> blobs) ToEntity(EmailToSend emailToSend) { var blobCount = 1 + emailToSend.Attachments.Count(); // To make sliiightly faster var blobs = new List <(string name, byte[] content)>(blobCount); string bodyBlobId = null; if (!string.IsNullOrWhiteSpace(emailToSend.Body)) { bodyBlobId = Guid.NewGuid().ToString(); var bodyBlobName = EmailUtil.EmailBodyBlobName(bodyBlobId); var bodyBlobContent = Encoding.UTF8.GetBytes(emailToSend.Body); blobs.Add((bodyBlobName, bodyBlobContent)); } var emailForSave = new EmailForSave { To = string.Join(';', emailToSend.To ?? new List <string>()), Cc = string.Join(';', emailToSend.Cc ?? new List <string>()), Bcc = string.Join(';', emailToSend.Bcc ?? new List <string>()), Subject = emailToSend.Subject, BodyBlobId = bodyBlobId, Id = emailToSend.EmailId, State = EmailState.Scheduled, Attachments = new List <EmailAttachmentForSave>() }; if (emailToSend.Attachments != null) { foreach (var att in emailToSend.Attachments) { // If there is no content, then don't add the attachment var contentBlobContent = att.Contents; string contentBlobId = null; if (contentBlobContent != null && contentBlobContent.Length > 0) { contentBlobId = Guid.NewGuid().ToString(); var contentBlobName = EmailUtil.EmailAttachmentBlobName(contentBlobId); blobs.Add((contentBlobName, contentBlobContent)); } emailForSave.Attachments.Add(new EmailAttachmentForSave { Name = att.Name, ContentBlobId = contentBlobId }); } } return(emailForSave, blobs); }
protected override void Execute(CodeActivityContext executionContext) { ITracingService tracer = executionContext.GetExtension <ITracingService>(); IWorkflowContext context = executionContext.GetExtension <IWorkflowContext>(); IOrganizationServiceFactory serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>(); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); try { EntityReference emailToSend = EmailToSend.Get(executionContext); EntityReference recipientQueue = RecipientQueue.Get(executionContext); bool sendEmail = SendEmail.Get(executionContext); bool includeOwner = IncludeOwner.Get(executionContext); List <Entity> toList = new List <Entity>(); Entity email = RetrieveEmail(service, emailToSend.Id); if (email == null) { UsersAdded.Set(executionContext, 0); return; } //Add any pre-defined recipients specified to the array foreach (Entity activityParty in email.GetAttributeValue <EntityCollection>("to").Entities) { toList.Add(activityParty); } bool is2011 = Is2011(service); EntityCollection users = is2011 ? GetQueueOwner(service, recipientQueue.Id) : GetQueueMembers(service, recipientQueue.Id); if (!is2011) { if (includeOwner) { users.Entities.AddRange(GetQueueOwner(service, recipientQueue.Id).Entities); } } toList = ProcessUsers(users, toList); //Update the email email["to"] = toList.ToArray(); service.Update(email); //Send if (sendEmail) { SendEmailRequest request = new SendEmailRequest { EmailId = emailToSend.Id, TrackingToken = string.Empty, IssueSend = true }; service.Execute(request); } UsersAdded.Set(executionContext, toList.Count); } catch (Exception e) { throw new InvalidPluginExecutionException(e.Message); } }
public override bool OnOptionsItemSelected(IMenuItem item) { switch (item.ItemId) { case Resource.Id.menu_done: if (!String.IsNullOrWhiteSpace(txtSendTo.Text.Trim())) { Regex regexEmail = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"); if (!regexEmail.Match(txtSendTo.Text).Success) { AlertDialog.Builder alert = new AlertDialog.Builder(this); alert.SetMessage("Please enter valid email id."); alert.SetNeutralButton("OK", delegate { }); alert.Create().Show(); // Toast.MakeText(this, "Please enter valid email id.", ToastLength.Short).Show(); txtSendTo.RequestFocus(); } else { } try { this.progressLayout.Visibility = ViewStates.Gone; var db = new SQLiteConnection(dbPath); EmailToSend email = new EmailToSend(); email.EmailId = txtSendTo.Text; email.EmailTemplate = ddlEmailTemplate.SelectedItem.ToString(); email.EmailBody = txtEmailTemplateContent.Text; email.DateTime = DateTime.Now; DataManager objData = new DataManager(); objData.SaveEmailToLocal(email); AlertDialog.Builder alert = new AlertDialog.Builder(this); alert.SetMessage("Record has been saved successfully."); alert.SetNeutralButton("OK", delegate { var intent = new Intent(this, typeof(MainMenuActivity)); StartActivity(intent); }); alert.Create().Show(); } catch (Exception ex) { Toast.MakeText(this, ex.ToString(), ToastLength.Short).Show(); } //this.progressLayout.Visibility = ViewStates.Gone; //MailMessage mail = new MailMessage(); //SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com"); //// SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com"); //mail.From = new MailAddress("*****@*****.**"); //mail.To.Add(txtSendTo.Text); //mail.Subject = "Car Rental Agreement"; //mail.Body = (txtEmailTemplateContent.Text); // SmtpServer.Port = 587; // SmtpServer.Credentials = new System.Net.NetworkCredential("*****@*****.**", "8273690066"); // SmtpServer.EnableSsl = true; // SmtpServer.Send(mail); // // MessageBox.Show("mail Send"); // AlertDialog.Builder alert = new AlertDialog.Builder(this); // alert.SetMessage("mail send."); // alert.SetNeutralButton("OK", delegate { }); // alert.Create().Show(); // //Toast.MakeText(this, "mail send", ToastLength.Short).Show(); //} //catch (Exception ex) //{ //} } else { AlertDialog.Builder alert = new AlertDialog.Builder(this); alert.SetMessage("Please fill all mandatory details."); alert.SetNeutralButton("OK", delegate { }); alert.Create().Show(); // Toast.MakeText(this, "Please fill all mandatory details", ToastLength.Short).Show(); } break; case Resource.Id.menu_cancel: //this.progressLayout.Visibility = ViewStates.Visible; //var intentVehicle = new Intent(this, typeof(RentFlowDriverSignatureActivity)); //intentVehicle.PutExtra("RentRunningTrans", JsonConvert.SerializeObject(rentRunningTrans)); //StartActivity(intentVehicle); break; } //Toast.MakeText(this, "Top ActionBar pressed: " + item.TitleFormatted, ToastLength.Short).Show(); return(base.OnOptionsItemSelected(item)); }
public Task SendAsync(EmailToSend email, string fromEmail = null, CancellationToken cancellation = default) => Task.CompletedTask;
public void SendEmail(EmailToSend email) { //Not doing this here }
protected override void ExecuteCrmWorkFlowActivity(CodeActivityContext context, LocalWorkflowContext localContext) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (localContext == null) { throw new ArgumentNullException(nameof(localContext)); } EntityReference emailToSend = EmailToSend.Get(context); EntityReference recipientQueue = RecipientQueue.Get(context); bool sendEmail = SendEmail.Get(context); bool includeOwner = IncludeOwner.Get(context); List <Entity> toList = new List <Entity>(); Entity email = RetrieveEmail(localContext.OrganizationService, emailToSend.Id); if (email == null) { UsersAdded.Set(context, 0); return; } //Add any pre-defined recipients specified to the array foreach (Entity activityParty in email.GetAttributeValue <EntityCollection>("to").Entities) { toList.Add(activityParty); } bool is2011 = Is2011(localContext.OrganizationService); EntityCollection users = is2011 ? GetQueueOwner(localContext.OrganizationService, recipientQueue.Id) : GetQueueMembers(localContext.OrganizationService, recipientQueue.Id); if (!is2011) { if (includeOwner) { users.Entities.AddRange(GetQueueOwner(localContext.OrganizationService, recipientQueue.Id).Entities); } } toList = ProcessUsers(users, toList); //Update the email email["to"] = toList.ToArray(); localContext.OrganizationService.Update(email); //Send if (sendEmail) { SendEmailRequest request = new SendEmailRequest { EmailId = emailToSend.Id, TrackingToken = string.Empty, IssueSend = true }; localContext.OrganizationService.Execute(request); } UsersAdded.Set(context, toList.Count); }