MailMessage をパラメーターとして WCF Web サービスに渡したいと考えています。問題は、MailMessage がシリアライズ可能ではなく、MailAddress などの多くのプロパティもシリアライズ可能でないことです。シリアル化するにはどうすればよいですか?
ラッパー クラスのプロパティとして使用してシリアル化するためのチュートリアルを見たことがありますが、MailMessage プロパティがクライアント側に表示されないため (シリアル化できないため)、WCF 経由で送信するのに役立ちません。 . 基本的な文字列値 (to、from、body) だけを送信したくありません。MailMessage 全体とそのすべてのプロパティを送信したいと考えています。これどうやってするの?
アップデート:
私は、Web サービスを使用して MailMessage クラスをシリアル化する価値はないと判断しました。シリアル化クラスは機能しましたが、そのメソッド/コンストラクターの多くは WCF クライアント/コンシューマーでは利用できませんでした。そのため、クライアント側で通常のクラス (MailMessage など) からシリアル化されたクラス (SerializedMailMessage など) に変換するコードを書き直す必要がありました。
私は、EmailHelper を使用してクラス ライブラリを作成し、呼び出し元アプリの構成を使用して SMTP 設定を決定することにしました。
SmtpSection smtpConfig = ConfigurationManager.GetSection("system.net/mailSettings/smtp") as SmtpSection;
if (smtpConfig != null) {
// extract values to your SmtpClient
}