SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(Secure Mail)

Windows Azure上で「Secure Mail 2.0J」を使ってみよう
~最新の環境で日本語メールを送信する~

  • X ポスト
  • このエントリーをはてなブックマークに追加

ASP.NET MVC 3アプリに適用

 ASP.NET MVC 3は、Webの世界でメジャーなMVCスタイルでの開発をASP.NETで行うためのフレームワークです(参考:『ASP.NET MVC3入門』)。ASP.NET MVC 3アプリの開発にはVisual Studio 2010が必要で、Visual Studio 2010もSecure Mail 2.0Jの動作保証環境ではありません。

プロジェクトの作成

 Visual Studio 2010を起動し、新規プロジェクトの作成で[ASP.NET MVC 3 Webアプリケーション]を選択します。

図1 新規プロジェクトを作成
図1 新規プロジェクトを作成

 最終的にインターネット上のホスティングサービスに配置して動作チェックをするため、テンプレートは[インターネットアプリケーション]を選択します。

図2 テンプレートの選択
図2 テンプレートの選択

Secure Mail 2.0Jを使う前準備

 Visual StudioのプロジェクトでSecure Mail 2.0Jを使うには、Secure Mailのコンポーネントの参照設定が必要です。

  1. ソリューションエクスプローラでプロジェクトを右クリックして[参照の追加]メニューを選択
  2. Dart.PowerTCP.SecureMail.dllを参照に設定
  3. ソリューションエクスプローラでプロジェクトを右クリックして[追加]-[新しい項目]メニューを選択
  4. テキストファイルとして「licenses.licx」を追加
リスト1 licenses.licxの内容
Dart.PowerTCP.SecureMail.Smtp, Dart.PowerTCP.SecureMail
Dart.PowerTCP.SecureMail.MessageStream, Dart.PowerTCP.SecureMail

モデルの追加

 今回のサンプルでは、/Home/Index/のView(Webページ)にメール送信用のページを作成します。このViewで使用するロジックは、ModelsフォルダにHomeModelsモデルを作成して記述するのがMVCスタイルです。そのため、Secure Mailを使用するコードはHomeModelsモデルの中に記述することになります。

図3 プロジェクト構造
図3 プロジェクト構造
リスト2 モデルの記述例
Imports System.ComponentModel
Imports System.ComponentModel.DataAnnotations

Public Class SendMailModel
    <Required(ErrorMessage:="SMTPサーバは必須です。")>
    <Display(Name:="SMTPサーバ")>
    Public Property SmtpServer As String
    <Required(ErrorMessage:="ポート番号は必須です。")>
    <Display(Name:="ポート番号")>
    Public Property SmtpPort As Integer
    <Required(ErrorMessage:="UserIDは必須です。")>
    <Display(Name:="UserID")>
    Public Property UserID As String
    <Required(ErrorMessage:="パスワードは必須です。")>
    <DataType(DataType.Password)>
    <Display(Name:="パスワード")>
    Public Property Password As String
    <Required(ErrorMessage:="メールアドレスは必須です。")>
    <DataType(DataType.EmailAddress)>
    <Display(Name:="メールアドレス")>
    Public Property MailAddress As String
    <Required(ErrorMessage:="送信先メールアドレスは必須です。")>
    <DataType(DataType.EmailAddress)>
    <Display(Name:="送信先メールアドレス")>
    Public Property ToAddress As String
    <Required(ErrorMessage:="件名は必須です。")>
    <Display(Name:="件名")>
    Public Property Subject As String
    <Required(ErrorMessage:="本文は必須です。")>
    <DataType(DataType.MultilineText)>
    <Display(Name:="本文")>
    Public Property Body As String
End Class

Public Class SendMailService
    Public Function SendMail(smtpServer As String,
                             smtpPort As Integer,
                             userID As String,
                             password As String,
                             mailAddress As String,
                             toAddress As String,
                             subject As String,
                             body As String,
                             result As String) As Boolean
        Dim isOK As Boolean = False

        Try
            Using _smtp As New Dart.PowerTCP.SecureMail.Smtp
                _smtp.Username = userID
                _smtp.Password = password
                _smtp.Server = smtpServer
                _smtp.ServerPort = smtpPort
                Using _msg As New Dart.PowerTCP.SecureMail.MessageStream
                    _msg.From = New Dart.PowerTCP.SecureMail.MailAddress(mailAddress)
                    _msg.To.Add(New Dart.PowerTCP.SecureMail.MailAddress(toAddress))
                    _msg.Charset = "ISO-2022-JP"
                    _msg.ContentType = "text/plain"
                    _msg.Header.Add(HeaderLabelType.ContentTransferEncoding, "7bit")
                    _msg.Subject = subject
                    _msg.Text = body
                    _smtp.Send(_msg)
                    isOK = True
                End Using
            End Using
        Catch ex As Exception
            result = ex.Message
        End Try
        Return isOK
    End Function
End Class
  1. SendMailModelクラス:SendMailModelクラスには、メール送信ページで使う項目をプロパティとして定義します。Required属性で未入力時のエラーメッセージを指定し、Display属性で項目名を定義します。この定義はView側で参照できます。
  2. SendMailServiceクラス:SendMailServiceクラスはメール送信用のクラスです。このクラスの中でSecure Mailを使用しています。SmtpオブジェクトにSMTPサーバーとの接続に必要な情報を設定し、MessageStreamオブジェクトにメールのヘッダ情報と本文を設定して、SmtpオブジェクトのSendメソッドでメール送信します。

次のページ
Viewデザイン

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(Secure Mail)連載記事一覧
この記事の著者

初音玲(ハツネアキラ)

 国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。 個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。 Microsoft MVP for Windows Development ブログ:http://hatsune.hatenablog.jp/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6003 2011/06/23 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング