メールを送信する単一のメソッドを持つ単純な小さなクラスをコーディングしています。私の目標は、これを従来の Visual Basic 6 プロジェクトに実装し、COM 相互運用機能を介して COM オブジェクトとして公開することです。
私が解決するのが難しいと思っている詳細があります。それは、パラメーターを検証する際にどれだけ細かくする必要があるかということです。その観点から、私が本当に満足していないこと、そして詳細ではないことは、私が実際に例外を処理している方法です:
public class MyMailerClass
{
#region Creation
public void SendMail(string from, string subject, string to, string body)
{
if (this.IsValidMessage(from, subject, to, body)) // CS1501
{
MailMessage msg = new MailMessage();
msg.IsBodyHtml = true;
msg.From = new MailAddress(from);
msg.To.Add(to);
msg.Subject = subject;
msg.Body = body;
SmtpClient srv = new SmtpClient("SOME-SMTP-HOST.COM");
srv.Send(msg);
}
else
{
throw new ApplicationException("Invalid message format.");
}
}
#endregion Creation
#region Validation
private bool IsValidMessage(string from, string subject, string to, string body)
{
Regex chk = new Regex(@"(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})");
if (!chk.IsMatch(from))
{
return false;
}
if (!chk.IsMatch(to))
{
return false;
}
if (!string.IsNullOrEmpty(subject))
{
return false;
}
if (!string.IsNullOrEmpty(body))
{
return false;
}
else
{
return true;
}
}
#endregion Validation
}
どんな提案でも大歓迎ですので、すべてのコメントに事前に感謝します!
注:この特定のケースでEnterprise Library のValidation Application Blockを実装すると便利でしょうか?