MailDefinition クラス
アセンブリ: System.Web (system.web.dll 内)


MailDefinition クラスをコントロールで使用すると、電子メール メッセージの本文を含むテキスト ファイルまたは文字列から MailMessage オブジェクトを作成できます。MailDefinition クラスを使用して、コントロールによって送信される定義済みの電子メール メッセージの作成を簡略化します。コントロールを使用せずに電子メールを送信する場合は、System.Net.Mail クラスのトピックを参照してください。
文字列を置換文字列に割り当てる IDictionary インスタンスを CreateMailMessage メソッドに渡して、電子メール メッセージの本文内のテキストを置換できます。
MailDefinition クラスによって作成された MailMessage オブジェクトは、SmtpClient クラスの Send メソッドを使用して送信されます。電子メールを送信できるようにするには、Web.config ファイルで SMTP メール サーバーを構成する必要があります。詳細については、「smtp 要素 (ネットワーク設定)」を参照してください。

Web フォーム ページからインターネット 電子メール メッセージを作成するコード例を次に示します。フォームにメッセージのテキストを入力するか、メールの本文として使用するテキスト ファイルの名前を入力できます。このコードは、メッセージに対して 2 つの文字列置換を定義します。フォームの [To] ボックスの受信者リストにより、文字列 "<%To%>" が置換され、From プロパティに指定されたテキストにより、文字列 "<%From%>" が置換されます。
このコードで生成される Web フォーム ページの [Create e-mail and display only] をクリックすると、電子メール メッセージを作成して、MailMessage オブジェクトのプロパティを Web ページに表示できます。[Create e-mail and send] をクリックすると、Web ページに電子メール メッセージを表示し、インターネット電子メールを使用して受信者にメッセージを送信します。
<%@ page language="VB"%> <%@ import namespace="System.Net.Mail"%> <%@ import namespace="System.Reflection"%> <%@ import namespace="System.Collections.Specialized"%> <script runat="server"> Function ShowMessage(ByVal msg As System.Net.Mail.MailMessage) As HtmlTable Dim table As HtmlTable = New HtmlTable Dim topRow As HtmlTableRow = New HtmlTableRow Dim fieldHeaderCell As HtmlTableCell = New HtmlTableCell Dim valueHeaderCell As HtmlTableCell = New HtmlTableCell fieldHeaderCell.InnerText = "Field" topRow.Cells.Add(fieldHeaderCell) valueHeaderCell.InnerText = "Value" topRow.Cells.Add(valueHeaderCell) table.Rows.Add(topRow) Dim p As PropertyInfo For Each p In msg.GetType().GetProperties() Dim row As HtmlTableRow = New HtmlTableRow Dim labelCell As HtmlTableCell = New HtmlTableCell Dim valueCell As HtmlTableCell = New HtmlTableCell If (Not ((p.Name = "Headers") Or _ (p.Name = "Fields") Or _ (p.Name = "Attachments"))) Then labelCell.InnerText = String.Format("{0}", p.Name) row.Cells.Add(labelCell) valueCell.InnerText = String.Format("{0}", p.GetValue(msg, Nothing)) row.Cells.Add(valueCell) End If table.Rows.Add(row) Next Return table End Function Function CreateMessage() As System.Net.Mail.MailMessage Dim md As MailDefinition = New MailDefinition md.BodyFileName = sourceMailFile.Text md.CC = sourceCC.Text md.From = sourceFrom.Text md.Subject = sourceSubject.Text If sourcePriority.SelectedValue = "Normal" Then md.Priority = MailPriority.Normal ElseIf sourcePriority.SelectedValue = "High" Then md.Priority = MailPriority.High ElseIf sourcePriority.SelectedValue = "Low" Then md.Priority = MailPriority.Low End If Dim replacements As ListDictionary = New ListDictionary replacements.Add("<%To%>", sourceTo.Text) replacements.Add("<%From%>", sourceFrom.Text) If useFile.Checked Then Dim fileMsg As System.Net.Mail.MailMessage fileMsg = md.CreateMailMessage(sourceTo.Text, replacements, Me) Return fileMsg Else Dim textMsg As System.Net.Mail.MailMessage textMsg = md.CreateMailMessage(sourceTo.Text, replacements, sourceBodyText.Text, Me) Return textMsg End If End Function Sub createEMail_Click(ByVal sender As Object, ByVal e As EventArgs) Dim msg As System.Net.Mail.MailMessage = CreateMessage() PlaceHolder1.Controls.Add(ShowMessage(msg)) End Sub Sub sendEMail_Click(ByVal sender As Object, ByVal e As EventArgs) Dim msg As System.Net.Mail.MailMessage = CreateMessage() PlaceHolder1.Controls.Add(ShowMessage(msg)) Try Dim sc As SmtpClient sc = New SmtpClient() sc.Send(msg) Catch ex As Exception errorMsg.Text = ex.ToString() End Try End Sub </script> <html> <body> <form id="Form1" runat="server"> <table id="Table1" cellspacing="1" cellpadding="1" width="450px" align="center"> <tr> <td align="center" colspan="3"> <h3>Create an e-mail message</h3> <tr> <td align="right">To:</td> <td style="WIDTH: 10px"> </td> <td> <asp:textbox id="sourceTo" runat="server" columns="54"></asp:textbox> <asp:requiredfieldvalidator id="RequiredFieldValidator1" runat="server" errormessage="*" controltovalidate="sourceTo"></asp:requiredfieldvalidator></td> </tr> <tr> <td align="right">Cc:</td> <td style="WIDTH: 10px"> </td> <td> <asp:textbox id="sourceCC" runat="server" columns="54"></asp:textbox> </td> </tr> <tr> <td align="right">From:</td> <td style="WIDTH: 10px"> </td> <td> <asp:textbox id="sourceFrom" runat="server" columns="54"></asp:textbox> <asp:requiredfieldvalidator id="RequiredFieldValidator2" runat="server" errormessage="*" controltovalidate="sourceFrom"></asp:requiredfieldvalidator></td> </tr> <tr> <td align="right"> Priority <td style="WIDTH: 10px"> </td> <td> <asp:dropdownlist id="sourcePriority" runat="server"> <asp:listitem value="Low">Low</asp:listitem> <asp:listitem value="Normal" selected="true">Normal</asp:listitem> <asp:listitem value="High">High</asp:listitem> </asp:dropdownlist> </td> <td> </td> </tr> <tr> <td align="right">Subject:</td> <td style="WIDTH: 10px"> </td> <td> <asp:textbox id="sourceSubject" runat="server" columns="54"></asp:textbox> </td> </tr> <tr> <td align="right">Source:</td> <td style="WIDTH: 10px"> </td> <td> <table id="Table2" cellspacing="1" cellpadding="1" width="100%"> <tr> <td style="WIDTH: 100px"> <asp:radiobutton id="useFile" runat="server" text="Use file" width="80px" groupname="textSource" checked="True"></asp:radiobutton> </td> <td style="WIDTH: 11px"> </td> <td> <p align="right">File name:</p> </td> <td> <asp:textbox id="sourceMailFile" runat="server" columns="22">mail.txt</asp:textbox> </td> </tr> <tr> <td style="WIDTH: 100px"> <asp:radiobutton id="useText" runat="server" text="Enter text" width="80px" height="22px" groupname="textSource"></asp:radiobutton> </td> <td style="WIDTH: 11px"> </td> <td> </td> <td> </td> </tr> </table> </td> <td> </td> </tr> <tr> <td align="center" colspan="3"> <asp:textbox id="sourceBodyText" runat="server" columns="51" textmode="MultiLine" rows="15"></asp:textbox> </td> </tr> <tr> <td align="center" colspan="3"> <asp:button id="createEMail" runat="server" text="Create e-mail and display only" onclick="createEMail_Click"></asp:button> <asp:button id="sendEMail" runat="server" text="Create e-mail and send"></asp:button></td> </tr> </table> <p> </p> <p> <asp:placeholder id="PlaceHolder1" runat="server"></asp:placeholder> </p> <p> <asp:literal id="errorMsg" runat="server"></asp:literal></p> </form> </body> </html>
<%@ page language="C#"%> <%@ import namespace="System.Net.Mail"%> <%@ import namespace="System.Reflection"%> <%@ import namespace="System.Collections.Specialized"%> <script runat="server"> HtmlTable ShowMessage(System.Net.Mail.MailMessage msg) { HtmlTable table = new HtmlTable(); HtmlTableRow topRow = new HtmlTableRow(); HtmlTableCell fieldHeaderCell = new HtmlTableCell(); HtmlTableCell valueHeaderCell = new HtmlTableCell(); fieldHeaderCell.InnerText = "Field"; topRow.Cells.Add(fieldHeaderCell); valueHeaderCell.InnerText = "Value"; topRow.Cells.Add(valueHeaderCell); table.Rows.Add(topRow); foreach(PropertyInfo p in msg.GetType().GetProperties()) { HtmlTableRow row = new HtmlTableRow(); HtmlTableCell labelCell = new HtmlTableCell(); HtmlTableCell valueCell = new HtmlTableCell(); if (!((p.Name == "Headers") || (p.Name == "Fields") || (p.Name == "Attachments"))) { labelCell.InnerText = String.Format("{0}",p.Name); row.Cells.Add(labelCell); valueCell.InnerText = String.Format("{0}",p.GetValue(msg ,null)); row.Cells.Add(valueCell); } table.Rows.Add(row); } return table; } System.Net.Mail.MailMessage CreateMessage() { MailDefinition md = new MailDefinition(); md.BodyFileName = sourceMailFile.Text; md.CC = sourceCC.Text; md.From = sourceFrom.Text; md.Subject = sourceSubject.Text; if (sourcePriority.SelectedValue == "Normal") { md.Priority = MailPriority.Normal; } else if (sourcePriority.SelectedValue == "High") { md.Priority = MailPriority.High; } else if (sourcePriority.SelectedValue == "Low") { md.Priority = MailPriority.Low; } ListDictionary replacements = new ListDictionary(); replacements.Add("<%To%>",sourceTo.Text); replacements.Add("<%From%>", md.From); if (true == useFile.Checked) { System.Net.Mail.MailMessage fileMsg; fileMsg = md.CreateMailMessage(sourceTo.Text, replacements, this); return fileMsg; } else { System.Net.Mail.MailMessage textMsg; textMsg = md.CreateMailMessage(sourceTo.Text, replacements, sourceBodyText.Text, this); return textMsg; } } void createEMail_Click(object sender, System.EventArgs e) { System.Net.Mail.MailMessage msg = CreateMessage(); PlaceHolder1.Controls.Add(ShowMessage(msg)); } void sendEMail_Click(object sender, System.EventArgs e) { System.Net.Mail.MailMessage msg = CreateMessage(); PlaceHolder1.Controls.Add(ShowMessage(msg)); errorMsg.Text = String.Empty; try { SmtpClient sc = new SmtpClient(); sc.Send(msg); } catch (HttpException ex) { errorMsg.Text = ex.ToString(); } } </script> <html> <body> <form id="Form1" runat="server"> <table id="Table1" cellspacing="1" cellpadding="1" width="450px" align="center"> <tr> <td align="center" colspan="3"> <h3>Create an e-mail message</h3> <tr> <td align="right">To:</td> <td style="WIDTH: 10px"> </td> <td> <asp:textbox id="sourceTo" runat="server" columns="54"></asp:textbox> <asp:requiredfieldvalidator id="RequiredFieldValidator1" runat="server" errormessage="*" controltovalidate="sourceTo"></asp:requiredfieldvalidator></td> </tr> <tr> <td align="right">Cc:</td> <td style="WIDTH: 10px"> </td> <td> <asp:textbox id="sourceCC" runat="server" columns="54"></asp:textbox> </td> </tr> <tr> <td align="right">From:</td> <td style="WIDTH: 10px"> </td> <td> <asp:textbox id="sourceFrom" runat="server" columns="54"></asp:textbox> <asp:requiredfieldvalidator id="RequiredFieldValidator2" runat="server" errormessage="*" controltovalidate="sourceFrom"></asp:requiredfieldvalidator></td> </tr> <tr> <td align="right">Subject:</td> <td style="WIDTH: 10px"> </td> <td> <asp:textbox id="sourceSubject" runat="server" columns="54"></asp:textbox> </td> </tr> <tr> <td align="right"> Priority <td style="WIDTH: 10px"> </td> <td> <asp:dropdownlist id="sourcePriority" runat="server"> <asp:listitem value="Low">Low</asp:listitem> <asp:listitem value="Normal" selected="true">Normal</asp:listitem> <asp:listitem value="High">High</asp:listitem> </asp:dropdownlist> </td> <td> </td> </tr> <tr> <td align="right">Source:</td> <td style="WIDTH: 10px"> </td> <td> <table id="Table2" cellspacing="1" cellpadding="1" width="100%"> <tr> <td style="WIDTH: 100px"> <asp:radiobutton id="useFile" runat="server" text="Use file" width="80px" groupname="textSource" checked="True"></asp:radiobutton> </td> <td style="WIDTH: 11px"> </td> <td> <p align="right">File name:</p> </td> <td> <asp:textbox id="sourceMailFile" runat="server" columns="22">mail.txt</asp:textbox> </td> </tr> <tr> <td style="WIDTH: 100px"> <asp:radiobutton id="useText" runat="server" text="Enter text" width="80px" height="22px" groupname="textSource"></asp:radiobutton> </td> <td style="WIDTH: 11px"> </td> <td> </td> <td> </td> </tr> </table> </td> <td> </td> </tr> <tr> <td align="center" colspan="3"> <asp:textbox id="sourceBodyText" runat="server" columns="51" textmode="MultiLine" rows="15"></asp:textbox> </td> </tr> <tr> <td align="center" colspan="3"> <asp:button id="createEMail" runat="server" text="Create e-mail and display only" onclick="createEMail_Click"></asp:button> <asp:button id="sendEMail" runat="server" text="Create e-mail and send"></asp:button></td> </tr> </table> <p> </p> <p> <asp:placeholder id="PlaceHolder1" runat="server"></asp:placeholder> </p> <p> <asp:literal id="errorMsg" runat="server"></asp:literal></p> </form> </body> </html>


System.Web.UI.WebControls.MailDefinition


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からMailDefinition クラスを検索する場合は、下記のリンクをクリックしてください。

- MailDefinition クラスのページへのリンク