文字列内のいくつかのコードを置き換える作業を行っています。私は emailtemplates テーブルから電子メール テンプレートを取得する関数を持って##NewUserFirstName##
い##password##
ます。どのテーブルからどの値がこれらのコードを置き換えるかを定義した別のテーブルが##NewUserFirstName##
ありUserProfile.FirstName
ます##password##
UserProfile.password
。私はこのようなすべてのマージコードを持っています:
using (IMailMergeCodeManager mailMergeCodeManager = new ManagerFactory().GetMailMergeCodeManager())
{
mailMergeCodes = mailMergeCodeManager.GetAll().ToList();
}
今、テンプレートのコードを次のようなコードに置き換えています。
using (ICampaignManager campaignManager = new ManagerFactory().GetCampaignManager())
{
using (IUserProfileManager UserProfileManager1 = new ManagerFactory().GetUserProfileManager())
{
using (IAccountManager AccountManager = new ManagerFactory().GetAccountManager())
{
using (ICallTypeManager CallTypeManager = new ManagerFactory().GetCallTypeManager())
{
using (ICallOutcomeManager CallOutComeManager = new ManagerFactory().GetCallOutcomeManager())
{
using (ICallRecordingManager CallRecordingManager = new ManagerFactory().GetCallRecordingManager())
{
UserProfile UserProfile = UserProfileManager1.GetByfkAccountId(Convert.ToInt32(AccountId)).FirstOrDefault();
Account acc = AccountManager.GetById(Convert.ToInt32(AccountId));
UserProfile CurrentLoggedInUser = UserProfileManager1.GetByfkAccountId(Convert.ToInt32(CurrentAccount.Id)).FirstOrDefault();
CallRecording callRecording = CallRecordingManager.GetById(callRecordingId);
if (subject.Contains("##password##") || body.Contains("##password##"))
password = GetPassword(UserProfile.UserAuthentication.EmailAddress);
foreach (MailMergeCode mergeCode in mailMergeCodes)
{
if (body.Contains(mergeCode.MailMerge))
body = Regex.Replace(body, mergeCode.MailMerge, mergeCode.FieldName, RegexOptions.IgnoreCase);
if (subject.Contains(mergeCode.MailMerge) && !subject.Contains("##password##"))
subject = Regex.Replace(subject, mergeCode.MailMerge, mergeCode.FieldName, RegexOptions.IgnoreCase);
}
}
}
}
}
}
}
}
しかし、次の行は次のようになり##NewUserFirstName##
ますUserProfile.FirstName
body = Regex.Replace(body, mergeCode.MailMerge, mergeCode.FieldName, RegexOptions.IgnoreCase);
UserProfile.FirstName
「Joe Smith」から値を取得する代わりに
どうすればこれを解決できますか?