14

MailDefinition クラスで「CreateMailMessage」メソッドを呼び出して MailMessage オブジェクトを作成する場合、3 番目のパラメーターは System.Web.UI.Control 型のオブジェクトです。

MailDefinition mail = new MailDefinition();

ListDictionary replacements = new ListDictionary();
replacements.Add("<%myname%>", "John");

mail.BodyFileName = "~/App_Data/Emails/SomeEmail.txt";
mail.From = "me@example.com";
mail.Subject = "Hello";

MailMessage message = mail.CreateMailMessage("example@example.com,", replacements, );

何故ですか?
そのタイプのオブジェクトがない場合、代わりに何を渡す必要がありますか? 単なる新しい Control オブジェクトですか?

Control control = new Control();

アップデート

Razorを使用して電子メール テンプレートを作成することを強くお勧めします。優れた構文を持ち、うまく機能し、奇妙な依存関係はありません!

4

5 に答える 5

5

通常this、コントロールとして渡すだけです。

MailMessage message = mail.CreateMailMessage("example@example.com,", replacements, this);

その理由については、MSDN が次のように述べています。

owner パラメーターは、どのコントロールが MailDefinition コントロールの親であるかを示します。BodyFileName プロパティで指定されたテキスト ファイルを検索するディレクトリを決定します。

于 2009-04-13T14:51:22.413 に答える
3

CreateMailMessage関数は、指定された Control を内部的に使用してAppRelativeTemplateSourceDirectoryプロパティOpenFileメソッドをクエリし、本文の内容を読み取ります ( MailDefinition のBodyFileNameプロパティで指定)。

私にとっては、設計が不十分で、不要な密結合のようです。

于 2012-01-26T11:19:01.090 に答える
1

new LiteralControl()メッセージがワークフローから送信されているため、3 番目のパラメーターに使用しています。できます。しかし、「なぜ」には答えがありません。

于 2010-07-28T00:25:53.867 に答える
0

コントロールにバインドしていない場合は、MailDefinition クラスをまったく使用する必要がないように思えます。単純に smtp 経由で電子メールを送信するには、System.Net.Mail.MailMessage で System.Net.Mail.SmtpClient を使用する必要があります。

于 2009-04-13T15:01:03.780 に答える