protected override IAsyncResult BeginExecute(AsyncCodeActivityContext context, AsyncCallback callback, object state) { MailMessage mail = new MailMessage(); mail.To.Add(ToAddress.Get(context)); mail.From = new MailAddress(FromAddress.Get(context)); mail.Subject = Subject.Get(context); mail.Body = Body.Get(context); mail.IsBodyHtml = true; SmtpClient smtp = new SmtpClient(); Action action = () => { ManualResetEvent manualResetEvent = new ManualResetEvent(false); smtp.SendCompleted += (o, args) => { manualResetEvent.Set(); Debug.WriteLine("Send Mail Completed"); }; smtp.SendAsync(mail, null); manualResetEvent.WaitOne(TimeSpan.FromSeconds(30)); }; context.UserState = action; return(action.BeginInvoke(callback, state)); }
/// <summary> /// SendEmail method useful for get email and prepare email template to send to customer /// </summary> private void SendEmail() { tracingService.Trace("Entered EmailSender.SendEmail()"); try { templateName = EmailTemplateName.Get(executionContext); queryString = ToAddress.Get(executionContext); category = Category.Get(executionContext); tracingService.Trace("EmailSender.SendEmail(), Template Name:{0} InPutEmailString: {1}, Category: {2}", queryString, templateName, category); if (!string.IsNullOrEmpty(templateName) && !string.IsNullOrEmpty(queryString)) { EntityCollection emails = null; if (queryString.TrimStart().StartsWith("<")) { emails = GetEmailsByFetchXML(); } else { emails = GetEmailByString(); } if (null != emails && emails.Entities.Count > 0) { PrepareEmail(emails); } } } catch (Exception ex) { throw ex; } }