ASP.NET EC のホームへ戻る

Webメール

 

ASP.NET 2.0ではWebメールの名前空間が「System.Web.Mail」から「System.Net.Mail」に変更されました。ここでは、System.Net.Mail名前空間のMailMessageクラスとSmtpClinetクラスを利用してWebメールを送信する方法を解説します。

 

●問い合わせ (Faq.aspx)

 

問い合わせのWebページには、「名前」、「メールアドレス」、「件名」、「メッセージ」を入力するテキストボックスと[送信]ボタンを配置しています。ASP.NET 2.0Webメールを送信するには「System.Net.Mail」名前空間のMailMessageクラスのインスタンスを生成してSmtpClientクラスのSendメソッドを実行して送信します。差出人と宛先のメールアドレスはMailMessageクラスのFromToプロパティに設定します。同様に件名と本文は、SubjectBodyプロパティに設定します。メールサーバー名はSmtpClientクラスのHostプロパティに設定します。ここでは保守性を考慮して差出人とメールサーバー名をWeb.configファイルから取得しています。

 

Web.config

<appSettings>

  <add key="emailServer" value="localhost" />

  <add key="emailFrom" value="webmaster@YourDomainName" />

</appSettings>

 

Faq.aspx.vb

Protected Sub btnSend_Click(ByVal sender As Object, _

  ByVal e As System.EventArgs) Handles btnSend.Click

  Dim smtp As New SmtpClient

  Dim strFrom As String = ConfigurationManager.AppSettings("emailFrom").ToString()

  Dim strTo As String = txtEmail.Text

  Dim strName As String = txtName.Text

  Dim strSubject As String = txtSubject.Text

  Dim strMessage As String = txtMessage.Text

  Dim strBody As String = strName & vbNewLine & strTo & vbNewLine & strMessage

 

  Dim email As New MailMessage(strFrom, strTo)

  Dim mailClient As New SmtpClient()

 

  email.Subject = strSubject

  email.Body = strBody

  mailClient.Host = ConfigurationManager.AppSettings("emailServer").ToString()

  mailClient.Send(email)

End Sub

 

図9:デザイナにTextBoxButtonを配置する

fig9

 

HTML形式のWebメールを送信するには、本誌3月号の「マスターオブASP.NET」で紹介したFreeTextBox 3.1.2を利用します。ASP.NET 2.0対応のFreeTextBoxには、dllにイメージ、JavaScriptXmlデータが含まれていますのでBinフォルダにFreeTextBox.dllをコピーするだけで利用できます。

 

WebページにFreeTextBoxを配置するには、@PageディレクティブのValidateRequest属性に「false」を設定します。さらに、@Registerディレクティブを追加してFreeTextBoxのアセンブリを指定します。

 

<%@ Page Language="VB" ValidateRequest="false" ... %>

<%@ Register TagPrefix="FTB" Namespace="FreeTextBoxControls" Assembly="FreeTextBox" %>

 

<FreeTextBox>タグには必ずSupportFolderプロパティを追加します。このプロパティを追加しないとランタイム時にXMLファイルが見つからない旨のエラーになります。

 

<FTB:FreeTextBox id="ftbMessage" runat="Server"

  Width="500px" Height="200px"

  SupportFolder="~/FreeTextBox/"

  Language="ja-JP" ToolbarStyleConfiguration="Office2003" />

 

メール本文をHTML形式で送信するには、MailMessageクラスのIsBodyHtmlプロパティに「True」を設定します。

 

email.IsBodyHtml = True

 

 

10 Webメールのメッセージ入力欄にFreeTextBoxを配置した例 (FaqHtml.aspx)

fig10x

 

ASP.NET EC のホームへ戻る