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;
                }
            }));
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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;
            }
        }
Esempio n. 4
0
		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);
		}
Esempio n. 5
0
		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);
		}