public static void NormalizeFields(ref string from, ref string to, ref string cc, ref string bcc) { from = EmailFunctions.Normalize(from); to = EmailFunctions.Normalize(to); cc = EmailFunctions.Normalize(cc); bcc = EmailFunctions.Normalize(bcc); if (from.IsEmpty()) { string defaultOriginatorName = RuntimePlatformSettings.EMail.DefaultOriginatorName.GetValue(); string defaultOriginatorEmail = RuntimePlatformSettings.EMail.DefaultOriginator.GetValue(); if (string.IsNullOrEmpty(defaultOriginatorName) || string.IsNullOrEmpty(defaultOriginatorEmail)) { throw new InvalidOperationException("The 'Default Sender Email' and 'Default Sender Name' must be set in Service Center's Email Configuration to send emails."); } from = EmailFunctions.Normalize(EmailFunctions.Compose(Encoding.UTF8, RuntimePlatformSettings.EMail.DefaultOriginatorName.GetValue(), RuntimePlatformSettings.EMail.DefaultOriginator.GetValue())); } }
// Left public because testing console needs this public static string ProcessEmailAddresses(Encoding encoding, string addresses) { StringBuilder new_addresses = new StringBuilder(); string[] address_array = addresses.Split(',', ';'); EncodeFlags flags = EncodeFlags.SingleLine | EncodeFlags.QuotedPrintable; foreach (string address_item in address_array) { string new_address_item = EmailHelper.TrimHeaderLine(EmailHelper.RemoveControlCodes(address_item)); new_address_item = EmailFunctions.EncloseEmail(new_address_item); if (new_address_item.Length > 0) { if (new_address_item.IndexOf("<") > 0) { string desc = new_address_item.Substring(0, new_address_item.IndexOf("<") - 1); string address = new_address_item.Substring(new_address_item.IndexOf("<") - 1, new_address_item.Length - new_address_item.IndexOf("<") + 1); if (address != null) { address = EmailHelper.TrimHeaderLine(address); } if (EmailEncoding.NeedsEncoding(encoding, desc, flags)) { new_addresses.Append(", " + EmailEncoding.EncodeString(encoding, desc, flags) + address); } else { new_addresses.Append(", " + new_address_item); } } else { new_addresses.Append(", " + new_address_item); } } } return(new_addresses.ToString().TrimStart(',').TrimStart()); }
public static int SendEmailRequest(string url, string from, string to, string cc, string bcc, int activityId, int tenantId, int userId, string consumerKey, string producerKey, bool storeContent, EmailType type) { from = EmailFunctions.Normalize(from); to = EmailFunctions.Normalize(to); cc = EmailFunctions.Normalize(cc); bcc = EmailFunctions.Normalize(bcc); if (to.IsEmpty() && cc.IsEmpty() && bcc.IsEmpty()) { throw new InvalidOperationException("Error creating email. There must be at least one recipient."); } try { int emailId = 0; url = url + (url.Contains("?") ? "&" : "?") + "_From=" + HttpUtility.UrlEncode(from) + "&_To=" + HttpUtility.UrlEncode(to) + "&_CC=" + HttpUtility.UrlEncode(cc) + "&_BCC=" + HttpUtility.UrlEncode(bcc) + "&_ActivityId=" + activityId + "&_TenantId=" + tenantId + "&_UserId=" + userId + "&_ProducerKey=" + producerKey + "&_IsEmail=true" + "&_StoreContent=" + ((storeContent || (type == EmailType.TestDownloadEmail)) ? "true" : "false") + ((type == EmailType.TestSendEmail || type == EmailType.TestDownloadEmail) ? "&_IsTestEmail=true" : ""); string baseUrl; EmailHelper.QueryParameter[] parameters; EmailHelper.SplitUrl(url, out baseUrl, out parameters); string content; string encoding; var authHeader = SecurityTokenManager.GenerateAuthorizationHeader(RuntimeSettingsProvider.Instance, consumerKey, producerKey, userId, tenantId); var headers = new Dictionary <HttpRequestHeader, string>(); headers.Add(HttpRequestHeader.Authorization, authHeader); EmailHelper.HttpPost(baseUrl, parameters, headers, "", null, out content, out encoding); var exceptionMatch = exceptionExp.Match(content); if (exceptionMatch != Match.Empty) { string message = HttpUtility.HtmlDecode(exceptionMatch.Groups[1].Value); string stacktrace = HttpUtility.HtmlDecode(exceptionMatch.Groups[2].Value); throw new EmailException("Error creating Email. " + message, stacktrace); } else { var emailMatch = emailIdExp.Match(content); if (emailMatch != Match.Empty) { emailId = Convert.ToInt32(emailMatch.Groups[1].Value); } else { throw new EmailException("Error creating Email. No EmailId was returned."); } } if (type != EmailType.TestDownloadEmail) { if (RuntimePlatformSettings.Sandbox.SandboxOperating.GetValue()) { using (Transaction statusTransaction = DatabaseAccess.ForCurrentDatabase.GetCommitableTransaction()) { DBRuntimePlatform.Instance.CreateEmailStatus(statusTransaction, emailId); SendEmailNotifier.Current.NotifiyNewEmail(); statusTransaction.Commit(); } } else { using (Transaction trans = DatabaseAccess.ForRuntimeDatabase.GetRequestTransaction()) { DBRuntimePlatform.Instance.CreateEmailStatus(trans, emailId); } } } return(emailId); } catch (EmailException) { throw; } catch (Exception e) { throw new EmailException("Error creating Email.", e); } }