Windows Azure上で「Secure Mail 2.0J」を使ってみよう
~最新の環境で日本語メールを送信する~
ダウンロード サンプルソース(VB) (1001.1 KB)
Viewデザイン
ロジック部分が完成したら、コントローラへモデルに記述したロジックを呼び出すコードを記入します。Index関数が2つあるのは、パラメタなしが対応するViewを呼び出したときに実行される関数と、HttpPost属性がついたパラメタありが対応するViewからSubmitされたときに実行される関数の2種類を用意する必要があるためです。
Public Class HomeController
Inherits System.Web.Mvc.Controller
Public Property SendMailService As New SendMailService
Function Index() As ActionResult
ViewData("Message") = "ASP.NET MVC へようこそ"
Return View()
End Function
<HttpPost()> _
Function Index(ByVal model As SendMailModel) As ActionResult
If ModelState.IsValid Then
Dim result As String = ""
If SendMailService.SendMail(model.SmtpServer,
model.SmtpPort,
model.UserID,
model.Password,
model.MailAddress,
model.ToAddress,
model.Subject,
model.Body,
result) Then
Return RedirectToAction("Thanks", "Home")
Else
ModelState.AddModelError("", result)
End If
End If
Return View(model)
End Function
Function Thanks() As ActionResult
Return View()
End Function
End Class
- Index関数では画面入力をパラメタとして引き取ります。パラメタの形式は、対応するモデルになります。
- ModelStateのIsValidプロパティがFalseならば「入力値に違反がある」ということなので、すぐにReturn View(model)に制御が移ります。
- SendMailService.SendMailメソッドがTrue(メール送信成功)であれば、/Home/Thanks/ページに遷移します。
ビューの作成
[Views]-[Home]フォルダにあるIndex.vbhtmlファイルを開いて、SendMailModelクラスで定義された項目をHTMLの中に埋め込んでいきます。
@ModelType CZ1106Mvc3.SendMailModel
@Code
ViewData("Title") = "ホーム ページ"
End Code
<h2>@ViewData("Message")</h2>
@Using Html.BeginForm()
@Html.ValidationSummary(True, "メール送信に失敗しました。エラーを修正し、再試行してください。")
@<div>
<fieldset>
<legend>メール送信</legend>
<div class="editor-label">
@Html.LabelFor(Function(m) m.SmtpServer)
</div>
<div class="editor-field">
@Html.TextBoxFor(Function(m) m.SmtpServer)
@Html.ValidationMessageFor(Function(m) m.SmtpServer)
</div>
:
(中略)
:
<p>
<input type="submit" value="送信" />
</p>
</fieldset>
</div>
End Using
今回のViewはビューエンジンに「ASPX」ではなく「Razor」を採用しているため、HTMLにかなり近い記法になっています。
Razorらしい記述の1つとして、HTMLヘルパーによるレンダリングがあります。@Html.LabelFor、@Html.TextBoxFor、@Html.ValidationMessageForはすべて「Function(m) m.SmtpServer」というラムダ式をパラメタとして指定していますが、この3つのレンダリング結果はそれぞれ異なります。
- @Html.LabelFor:LabelForはSmtpServerプロパティのDisplay属性の設定値を表示するHTMLヘルパーなのでレンダリング結果はDisplay属性に指定されている「SMTPサーバ」になります。
- @Html.TextBoxFor:TextBoxForはSmtpServerプロパティの値をINPUTタブとして表示入力するHTMLヘルパーになります。
- @Html.ValidationMessageFor:ValidationMessageForはSmtpServerプロパティのRequired属性などのValidation関連の設定値を該当するValidationが発生したときに表示するためのHTMLヘルパーになります。
この記事は参考になりましたか?
- 現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(Secure Mail)連載記事一覧
-
- Windows Azure上で「Secure Mail 2.0J」を使ってみよう ~最新の...
- 日本語メールの送信で起こりうる予期せぬクレーム~.NET Framework標準機能と市販...
- この記事の著者
-
初音玲(ハツネアキラ)
国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。 個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。 Microsoft MVP for Windows Development ブログ:http://hatsune.hatenablog.jp/
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
