0

私はここで少し立ち往生しています。ストアド プロシージャを使用してデータベースから取得した特定のフィールドを編集したいと考えていました。テーブル「Email」にすべてのものを保存した電子メール情報を送信しようとしています。テーブル「メール」から情報を取得したら、データベースから取得した本文の情報を編集し、作成したメール サービスを使用してユーザーに送信します。以下は私が今までやってきたことです。ハッシュ テーブルを作成し、そこに値を格納しました。

MembershipUser qiUser = ((GenericMembershipProvider)Membership.Provider).GetUser(objSubAccount.CreatedByUser, false);

            Hashtable mailKeywords = new Hashtable();
            mailKeywords.Add("[AccountNumber]", objSubAccount.AccountNumber);
            mailKeywords.Add("[AccountSubmissionDate]", objSubAccount.SubmittedOn.ToString());
            mailKeywords.Add("[FBONameTitle]", objSubAccount.FBO1FirstName.Trim().Length == 0 && objSubAccount.FBO1MiddleInitial.Trim().Length == 0 && objSubAccount.FBO1LastName.Trim().Length == 0
            ? objSubAccount.FBO1AccountTitling : objSubAccount.FBO1FirstName + " " + objSubAccount.FBO1MiddleInitial + " " + objSubAccount.FBO1LastName);
            mailKeywords.Add("[QIName]", objSubAccount.CompanyName);
            mailKeywords.Add("[QIUserName]", qiUser.UserName);
            mailKeywords.Add("[QIUserEmailAddress]", qiUser.Email);
            mailKeywords.Add("[WireEmailNotification1]", objSubAccount.WireEmailNotification1);
            mailKeywords.Add("[WireEmailNotification2]", objSubAccount.WireEmailNotification2);
            mailKeywords.Add("[WireEmailNotification3]", objSubAccount.WireEmailNotification3);

これらの値をクラス EmailContent のさまざまなプロパティに次のように割り当てました。

EmailContent objEmailContent = new EmailContent();
            objEmailContent = EmailContent.GetEmailContentType(EmailContentType.WireroomGroup);
            objEmailContent.To = BancorpConfig.WireroomReceiverEmail;
            objEmailContent.Sender = BancorpConfig.WireRoomSenderEmail;
            objEmailContent.Subject = EmailContent.ReplacePlaceHolder(objEmailContent.Subject, mailKeywords);
            objEmailContent.Body = EmailContent.ReplacePlaceHolder(objEmailContent.Body, mailKeywords);
            objEmailContent.From = BancorpConfig.WireRoomSenderEmail;
            objEmailContent.MailDate = System.DateTime.Now;

ここでやりたいことは、objEmailContent.Body の値を取得したときに、列 WireEmailNotificaion1 に値がないかのように編集して、ブラケット "()" を削除することです。それらが WireEmailNotification1 である場合、値は (aa@gmail.com) として表示される必要があります。

メール本文は以下の通りです。

New QI Sub Account Application Submitted<br />
Account Number: ([AccountNumber])<br />
FBO Name/Account Title: ([FBONameTitle]) <br />
Application Submitted Date: ([AccountSubmissionDate])<br />
QI Name: ([QIName])<br />QI User Name: ([QIUserName])<br />
QI User Email Address: ([QIUserEmailAddress])<br />
Wire Email Notification 1: ([WireEmailNotification1])<br/>
Wire Email Notification 2: ([WireEmailNotification2])<br/>
Wire Email Notification 3: ([WireEmailNotification3])<br/>
Please add account to the Caller ID’s on Schedule A of the Wire Agreement.

WireEmailNotification1、WireEmailNotification2、WireEmailNotification3 に値がない場合、本文からブラケットを削除するにはどうすればよいですか?

4

2 に答える 2

0

私がこれを正しく理解しているなら、あなたはテンプレートを持っていて、データベースからいくつかの値を取り、それをメッセージ本文に入れたいと思うでしょう。この要件があったとき、実際にHTMLテンプレートと動的コンテンツを配置する場所を作成し、いくつかのタグを定義して(これまでと同じように)、各タグを見つけてそれぞれのフィールドに置き換えます。

他のオプション(あまり良くありません)、データベースにすべてがあるので、最終的なメッセージ本文を与えるプロシージャを書くことができます(プロシージャのフィールドをマップするのは簡単です)。これには、Exec'select*from'を使用できます。

于 2012-09-12T14:57:26.143 に答える
0

これはあなたにとって可能性がありますか?:

  • テンプレートからブラケットを削除します。
  • 三項演算子を使用して、必要な場合にのみ追加します

例:

mailKeywords.Add("[WireEmailNotification1]", objSubAccount.WireEmailNotification1 != "" ? "(" + objSubAccount.WireEmailNotification1 + ")" : "" );

これは、次のように言っているのと同じです (括弧に注意してください):

        if (objSubAccount.WireEmailNotification1 != "")
        {
            mailKeywords.Add("[WireEmailNotification1]", "(" + objSubAccount.WireEmailNotification1+ ")" ); 
        }
        else
        {
            mailKeywords.Add("[WireEmailNotification1]","");
        }
于 2012-09-12T16:05:54.433 に答える