public object SendEmail(IEmail email, IEmailRecipient recipient, bool checkUserPreferences) { return(base.ExecuteFunction <object>("SendEmail", delegate() { //TODO:MUST:Email: Change this to a db driven queue system. // Create email table // Create deamon that processes that table // Add to the table here // Agitate the daemon try { MailAddress fromAddress = null; if (!string.IsNullOrEmpty(email.FromName) && !email.FromName.Equals(email.FromEmail, StringComparison.OrdinalIgnoreCase)) { fromAddress = new MailAddress(email.FromEmail, email.FromName, System.Text.Encoding.UTF8); } else { fromAddress = new MailAddress(email.FromEmail, email.FromEmail, System.Text.Encoding.UTF8); } MailAddress toAddress = null; if (!string.IsNullOrEmpty(recipient.DisplayName) && !recipient.DisplayName.Equals(recipient.EmailAddress, StringComparison.OrdinalIgnoreCase)) { toAddress = new MailAddress(recipient.EmailAddress, recipient.DisplayName, System.Text.Encoding.UTF8); } else { toAddress = new MailAddress(recipient.EmailAddress, recipient.EmailAddress, System.Text.Encoding.UTF8); } MailMessage message = new MailMessage(fromAddress, toAddress); message.IsBodyHtml = true; message.Body = email.HTMLBody; message.BodyEncoding = System.Text.Encoding.UTF8; message.Subject = email.Subject; message.SubjectEncoding = System.Text.Encoding.UTF8; SmtpClient smtpClient = this.GenerateSmtpClient(); smtpClient.Send(message); HealthReporter.Current.UpdateMetric(HealthTrackType.Each, string.Format(HealthReporter.EMAIL_FORMAT, email.InternalTypeID, "sent"), 0, 1); return true; } catch (Exception ex) { this.IFoundation.LogError(ex, "PerformSendEmail"); HealthReporter.Current.UpdateMetric(HealthTrackType.Each, string.Format(HealthReporter.EMAIL_FORMAT, email.InternalTypeID, "fail"), 0, 1); return false; } })); }
private MailMessage GetMailMessage(IEmailRecipient recipient) { MailMessage result = new MailMessage(); result.From = new MailAddress(this.FromAddress, this.FromName); result.To.Add(new MailAddress(recipient.EmailAddress, recipient.Name)); result.Subject = this.Subject; AlternateView plainTextView = AlternateView.CreateAlternateViewFromString(this.ExtractPlainTextFormat(), Encoding.UTF8, MediaTypeNames.Text.Plain); AlternateView htmlTextView = AlternateView.CreateAlternateViewFromString(this.Contents, Encoding.UTF8, MediaTypeNames.Text.Html); result.AlternateViews.Add(plainTextView); result.AlternateViews.Add(htmlTextView); return(result); }
private static void AddRecipient(MimeMessage mimeMessage, IEmailRecipient emailRecipient) { var mailboxAddress = new MailboxAddress(emailRecipient.EmailAddress.Name, emailRecipient.EmailAddress.Value); switch (emailRecipient.RecipientType) { case RecipientType.Bcc: mimeMessage.Bcc.Add(mailboxAddress); break; case RecipientType.Cc: mimeMessage.Cc.Add(mailboxAddress); break; case RecipientType.To: mimeMessage.To.Add(mailboxAddress); break; } }
private void ProcessRecipient(Request request, IEmailRecipient recipient, string addressType) { Workshare.PolicyContent.RoutingItem routingItem = new Workshare.PolicyContent.RoutingItem(); routingItem.Content = recipient.EmailAddress; CustomProperty displayName = new CustomProperty(SMTPItemPropertyKeys.DisplayName, recipient.Name.Trim()); CustomProperty addressTypeProp = new CustomProperty(SMTPItemPropertyKeys.AddressType, addressType); CustomProperty internalFlag = new CustomProperty(SMTPItemPropertyKeys.Internal, recipient.Internal.ToString()); CustomProperty modified = new CustomProperty(EmailProperties.ModifiedKey, bool.FalseString); routingItem.Properties = new CustomProperty[] { displayName, addressTypeProp, internalFlag, modified }; AddReadOnlyAttribute(routingItem); AddOrReplaceDestinationRoutingItem(request, routingItem); }
private void ProcessRecipient(IUniversalRequestObject uro, IEmailRecipient recipient, string addressType) { IRoutingItem routingItem = new RoutingItem(recipient.EmailAddress); routingItem.Properties[SMTPItemPropertyKeys.DisplayName] = recipient.Name.Trim(); routingItem.Properties[SMTPItemPropertyKeys.AddressType] = addressType; routingItem.Properties[SMTPItemPropertyKeys.Internal] = recipient.Internal.ToString(); routingItem.Properties[EmailProperties.ModifiedKey] = bool.FalseString; AddReadOnlyAttribute(routingItem); AddOrReplaceDestinationRoutingItem(uro, routingItem); }