メール送信

Similar documents
VB.NET解説

ICONファイルフォーマット

データアダプタ概要

グラフィックス

ファイル操作

ファイル操作-インターネットキャッシュ

Userコントロール

NotifyIconコントロール

VB実用Ⅲ⑩ フリーデータベースⅡ

プロセス間通信

正規表現応用

プラグイン

ListViewコントロール

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値

ファイル操作-バイナリファイル

ファイル監視

メール設定

Outlook Express 6 の場合 (Windows XP) Outlook Express 6 の場合 (Windows XP) Windows XP に付属する Outlook Express 6 に αweb のメールアカウントを追加する方法についてご案内します 1 スタート をクリッ

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

ルーレットプログラム

メール受信

64bit環境で32bitコンポーネントの利用

// このクラスの有効期間中の各呼び出しに使用される キャッシュされた Socket オブジェクト Socket socket = null; // 非同期処理が完了したことを通知するために信号を送るオブジェクト static ManualResetEvent clientdone = new Ma

ハッシュテーブル

DAOの利用

データベースプログラミング

Ver.1.1

mySQLの利用

よくある質問 Q1. 署名付きメールを受信後 署名アイコンをクリックしてメッセージの作成者から正常に送信されていることを確認しましたが 取り消し状態 に デジタル ID の確認が無効になっています と表示されました (Outlook Express6 Windows Mail) 初期設定では 証明書

構造体

Prog2_15th

VFD256 サンプルプログラム

Microsoft Word - VB.doc

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

メール設定 Outlook Express 6 の場合 (Windows 98 ~ XP) Outlook Express 6 の場合 (Windows 98 ~ XP) Windows XP に付属する Outlook Express 6 に αweb のメールアカウントを追加する方法についてご案

モグラ叩きプログラム

3軸加速度センサーモジュール MM-2860 書込み済みマイコンプログラム通信コマンド概要

SOC Report

ブロック パニック

大阪大学キャンパスメールサービスの利用開始方法

VB実用⑦ エクセル操作Ⅰ

グラフィックス 目次

目次. WEB メールへのログイン.... メール送信手順.... メール受信手順.... アドレス帳の操作手順.... フォルダーの操作手順 メール発信者登録 署名登録手順 基本的な設定 参考情報... 8

Microsoft Excel操作


製品を使う前に基本操作インターネットアプリケーション Q&A 付録 Web Internet Explorer の使い方 1 Web Web Windows Internet Explorer Web Internet Explorer Internet Explorer を ❶ 起動する Inte

平成 30 年度 プログラミング研修講座 岩手県立総合教育センター

登録手順 1 の 2 Microsoft Outlook 2013 スタートアップ 参考 スタートアップ画面が表示されない場合 Microsoft Outlook 2013 の起動画面から [ ファイル ] タブを選択し [ 情報 ] をクリックします アカウント情報から [ アカウントの追加 ]

Microsoft Word -

<4D F736F F D B9689C291D282BF817A30332D E B838B90DD92E8837D836A B B

グラフィックス 目次

CONTENTS 目 次 はじめに 1 メール送信テストツール の必要システム環境 1 ファイルの展開 2 圧縮された (ZIP) ファイルを展開 ( 解凍 ) する方法 2 前準備 3 送信テスト 4 操作方法 4 送信テスト時の確認事項 8 SMTP サーバーへのメール送信 8 メール送信後のメ

1. POP3S および SMTP 認証 1 メールアイコン ( ) をクリックしてメールを起動します 2 一度もメールアカウントを作成したことがない場合は 3 へ進んでください メールアカウントの追加を行う場合は メール メニューから アカウントを追 加 をクリックします 3 メールアカウントのプ

チャットアプリ

VB.NET解説

テキストファイルの入出力1

Secure iNetSuite for .NET 4.0Jの新仕様について

ブロック崩し風テニス

メール送信テストツール手順書

Mailman管理者マニュアル

1.POP3S および SMTP 認証 1 Outlook2016 を起動します 2 Outlook2016 へようこそ ウィンドウが表示されますので 次へ ボタンを クリックします メールアカウントの追加を行う場合や Outlook2016 へようこそ ウィンドウが表示されない場合は 以下の手順を

2. Save をクリックします 3. System Options - Network - TCP/IP - Advanced を開き Primary DNS server と Secondary DNS Server に AXIS ネットワークカメラ / ビデオエンコーダが参照できる DNS サ

インストール手順 2 セットアップの種類 [ 標準インストール (S)] [Thunderbird を既定のメールプログラムとして使用する (U)] にチェックを入れ [ 次へ (N)] をクリックします インストール手順 3 セットアップ設定の確認 [ インストール (I)] をクリックします 2

在学生向けメールサービス

登録手順 1 の 2 Microsoft Outlook 2010 スタートアップ 参考 スタートアップ画面が表示されない場合 Microsoft Outlook 2010 の起動画面から [ ファイル ] タブを選択し [ 情報 ] をクリックします [ アカウント設定 ] [ アカウント設定 (

C 資料 電脳梁山泊烏賊塾 構造体 C++ の構造体 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する 定義と変数宣言 C++ に

動体検知によるメール送信イベントの設定方法(ファームウェアⅴ7.1ⅹ以上)

Getting Start mdc (Mail Destination Confirm) Getting Start mdc (Mail Destination Confirm) Rev /11/3 目次 Getting Start mdc (Mail Destination Con

Prog2_12th

Case 0 sqlcmdi.parameters("?tencode").value = Iidata(0) sqlcmdi.parameters("?tenname").value = Iidata(1) 内容を追加します sqlcmdi.executenonquery() Case Else

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 文字列 文字列リテラル プログラムの中で文字列を表す方法は幾つか有るが 基本的な方法は下記の 2 種で有る 対象と成る文字の集まりをダブルクオーテーション ( " ) で囲うか シングルクオーテーション ( ' ) で囲う PYTHON3 "

目次 1. 教育ネットひむかファイル転送サービスについて ファイル転送サービスの利用方法 ファイル転送サービスを利用する ( ひむか内 ) ファイル転送サービスへのログイン ひむか内 PCでファイルを送受信する

WebReportCafe

目次 1. はじめに ログイン方法 (PC の場合 ) メール送信方法 (PC の場合 )... 6 からのアドレス帳の移行方法 (PC の場合 ) メール転送方法 (PC の場合 ) Gmail アプリの設

メール誤送信対策<利用者編> ご利用の手引き

ウィンドウ操作 応用

Active! mail 6 操作マニュアル 株式会社トランスウエア Copyright TransWare Co. All rights reserved.

公立大学法人首都大学東京

1. メールソフトの設定 Windows 10 Microsoft Windows 10 の メール アプリで POP メールの設定を行う方法をご案内いたします 設定を始める前に あらかじめ メールアドレスの登録を行ってください 重要事項 Windows10 のメールアプリで CCNet のメールを

Microsoft Outlook 2007 編 本書では Microsoft Outlook 2007 の設定方法を説明します 目次 P1 1 Microsoft Outlook 2007 の起動 P1 2 メールアカウントの登録 P9 3 メールアカウント設定の確認 P14 4 接続ができない時

プリンタ印字用 DLL 取扱説明書

10 完了 をクリック 13 このサーバーは認証が必要 をチェックして 設定 をクリック Windows メール Windows Vista に標準のメールソフト Windows メール の設定方法を説明します 1 スタート から 電子メール Windows メール をクリック 11 続いて設定ファ

正規表現概要

TestDesign for Web

ADempiere (3.5)

1 はじめに はじめに 制限事項 注意事項 お問い合わせ窓口 メールの利用 ( ブラウザを利用 ) OUTLOOK WEB APP への接続方法 EXCHANGE ONLINE の画面構成...

おらんかにクライアント操作マニュアル

スライド 1

1 POP 系の設定 重要事項 Windows10 のメールアプリで CCNet のメールを利用する場合 以下の点にご注意ください Windows 10 に標準でインストールされている メール アプリは 弊社のメール方式 (POP) に対応はしておりますが 本マニュアル制作時点 ( バージョン 17

登録手順 1 の 2 Microsoft Outlook 2003 スタートアップ 参考 スタートアップ画面が表示されない場合 Microsoft Outlook 2003 の起動画面から [ ツール (T)] [ 電子メールアカウント (A)] の順にクリック します 電子メールアカウント画面が表

データベースⅠ

各種パスワードについて マイナンバー管理票では 3 種のパスワードを使用します (1) 読み取りパスワード Excel 機能の読み取りパスワードです 任意に設定可能です (2) 管理者パスワード マイナンバー管理表 の管理者のパスワードです 管理者パスワード はパスワードの流出を防ぐ目的で この操作

Thunderbird(Windows) 設定マニュアル 目次 1 POP 系の設定 初めて設定する場合 ( 追加メールアドレスの設定 ) 設定内容の確認 変更 メールアドレス変更後の設定変更 メールパスワード変更後の設定変更

Microsoft Word - WebMail.docx

登録手順 2 アカウントの登録 追加 インターネットアカウント画面が表示されます [ 追加 (A)] [ メール (M)] の順にクリックします 登録手順 3 表示名の設定 インターネット接続ウィザードが表示されます [ 表示名 (D)] に名前を入力します 入力が完了したら [ 次へ (N)] を

画像閲覧プログラム

目 次 1. Windows Live Mail を起動する 1 2. Windows Live Mail の画面構成 1 3. 電子メールを別ウインドウで表示する 2 4. メールを作成する 2 5. メールを送信する 4 6. メールを受信する 5 7. 受信したメールに返信する 5 8. 受信

拓殖大学総合情報センター 学生 Web メール (Office365) 操作マニュアル 目 次 1. Office365 の Web メール 2 2. 利用上の制約事項 送受信メールサイズ制限 メールボックス利用制限 2 3. Office365 のサインイン サインアウト

研究室LANの設定方法

Transcription:

メール Visual Basic 2005 でのメール送信 1 System.Net.Mail 名前空間の MailMessage クラスと SmtpClient クラスを使用 メール送信機能の有るアプリケーションを作成する必要が有る場合が有る 其処で 此処では メールの送信機能を持つアプリケーション ( 図 1) の作成方法に付いて紹介する 図 1 Visual Basic 6.0 では Microsoft MAPI Controls 6.0 を使用してメールの送信を実装し Visual Basic.NET では System.Web.Mail 名前空間の MailMessage クラスで差出人や送信先 件名 本文等の設定を行い SmtpMail クラスでメールを送信する 一方 Visual Basic 2005 では Visual Basic.NET と同様に System.Web.Mail 名前空間の MailMessage クラスと SmtpMail クラスを使用して実装する事も出来るが 新たにサポートされた System.Net.Mail 名前空間の MailMessage クラスと SmtpClient クラスを使用して実装する事が出来る 此処では 新たにサポートされた System.Net.Mail 名前空間を使用しての実装方法に付いて紹介する 実装コードは以下の通りで有る Visual Basic Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click Try Dim message As New System.Net.Mail.MailMessage(txtForm.Text, txtto.text) message.subject = Me.txtSubject.Text message.body = Me.txtBody.Text Dim client As New System.Net.Mail.SmtpClient("abcd.xxx.co.jp") client.send(message) -1-

txtform.clear() txtto.clear() txtsubject.clear() txtbody.clear( ) MessageBox.Show(" メールを送信しました ", " 送信終了 ") Catch ex As Exception MessageBox.Show(" 送信できませんでした ", " エラー ") End Try End Sub MailMessage クラスで 差出人 ( 受信者 ) 送信先を メールの件名 本文を夫々れ設定し SmtpClient クラスでメールを送信する 上記のコード例を元に メール送信の手順を 下記に示す 1. 差出人と送信先を設定する Dim message As New System.Net.Mail.MailMessage(txtForm.Text, txtto.text) 2. メール件名を設定する message.subject = Me.txtSubject.Text 3. 本文を設定する message.body = Me.txtBody.Text 4. 送信時に使用する SMTP を指定する Dim client As New System.Net.Mail.SmtpClient("abcd.xxx.co.jp") 5. メールを送信する client.send(message) 上記を実装し 図 1 のか 送信 ボタンをクリックすると メールが送信される 然して 各テキストボックスのデータが削除され 図 2 の送信完了の通知が表示される 図 2-2-

Visual Basic 2005 でのメール送信 2 System.Net.Mail 名前空間の MailMessage クラスと SmtpClient クラスを使用 Visual Basic.NET では System.Web.Mail 名前空間 SmtpMail クラスを使用してメールを送信したが此の SmtpMail クラスは.NET Framework 2.0 では旧式と成って仕舞って居り 以前に作成されたコードを動作させる為の互換性目的で残されて居る丈で有る 此の代わりに.NET Framework 2.0 では System.Net.Mail 名前空間が追加されて居り 此れに所属するクラス群 ( 具体的には メールを送信する機能を提供する SmtpClient クラス等 ) を利用する事が推奨されて居る 其処で 此処では SmtpClient クラスを用いて電子メールを送信する最も簡単なな方法を紹介する SmtpClient クラスを用いてメールを送信する方法 SmtpClient クラスを用いて電子メールを送信するのに最低限必要と成るのは 次の 5 つの情報で有る 1.SMTP サーバ名 ( 電子メールの送信を行う SMTP サーバの名前 ) 2.From アドレス ( 送信者のメールアドレス ) 3.To アドレス ( 受信者のメールアドレス ) 4. 件名 ( 所謂 Subject) 5. 本文 此等の情報を下記のコード例の様に指定して プログラムを実行すれば メールを送信出来る Visual Basic Imports System.Net.Mail ' SMTP サーバ名を指定して SmtpClient オブジェクトのインスタンス生成 Dim mailer As New SmtpClient("mail.sample.domain") ' メールの送信処理 mailer.send( _ "from_address@sample.domain ", _ ' From アドレス "to_address@sample.domain ", _ ' To アドレス " 電子メールのタイトル ", _ ' 件名 " 本文を此処に書く ") ' 本文 C# using System.Net.Mail; // SMTP サーバ名を指定して SmtpClient オブジェクトのインスタンス生成 SmtpClient mailer = new SmtpClient("mail.sample.domain"); // メールの送信処理 mailer.send( "from_address@sample.domain ", // From アドレス "to_address@sample.domain ", // To アドレス " 電子メールのタイトル ", // 件名 " 本文を此処に書く "); // 本文 -3-

SMTP サーバ名を文字列で SmtpClient クラスのコンストラクタに指定し From アドレス To アドレス 件名 本文と謂う情報を文字列で SmtpClient オブジェクトの Send メソッドのパラメータに指定する 上記のコードを簡単に解説すると SmtpClient クラスのコンストラクタのパラメータに文字列で SMTP サーバ名 を指定し 残りの情報 (From アドレス To アドレス 件名 本文 ) を Send メソッドの各パラメータに指定して居る 僅か此れ丈の記述でメールを送信する事が出来る SMTP サーバのポート番号が通常 ( 即ち 25) と異なる場合は 下記のコードの例の様に SmtpClient クラスのコンストラクタの第 2 パラメータに其の番号を指定すれば良い Visual Basic Dim mailer As New SmtpClient("mail.sample.domain", 1025) C# SmtpClient mailer = new SmtpClient("mail.sample.domain", 1025); SmtpClient クラスのコンストラクタの第 2 パラメータにポート番号を指定出来る 猶 上記の例では SmtpClient クラスのコンストラクタに SMTP サーバ名とポート番号を指定する方法を紹介したが 此等は 下記のプロパティから設定 取得する事も可能で有る SMTP サーバ名 :SmtpClient オブジェクトの Host プロパティ ポート番号 :SmtpClient オブジェクトの Port プロパティ 此処で紹介した Send メソッドは 同期処理を行う為 SMTP サーバへの接続が完了するか 接続に失敗してタイムアウトする迄 処理が戻って来ない 此れが問題と成る場合には 非同期処理を行う SendAsync メソッドを使う必要が有る 猶 SMTP サーバへの接続タイムアウト時間は既定で 100 秒 (100000 ミリ秒 ) と成って居るが 次のプロパティに依り変更する事も出来る ( ミリ秒単位で指定 ) 接続タイムアウト :SmtpClient オブジェクトの Timeout プロパティ 此処で紹介した SmtpClient クラスの使い方は最もシンプルな物だが CC( カーボンコピー ) や BCC ( ブラインドカーボンコピー ) 等に追加のメールアドレスを指定したり 添付ファイルを追加したりして電子メールを送信する事も可能だ 亦 SMTP サーバへのアクセスでユーザー名とパスワードに依る認証を行ったり SSL(Secure Sockets Layer) 接続を行ったりする事も出来る 使用ライブラリ :SmtpClient クラス (System.Net.Mail 名前空間 ) -4-

Visual Basic.NET でのメール送信 1 System.Web.Mail 名前空間の SmtpMail クラスを使用 メールの送信機能を持つアプリケーションを作成する場合 Visual Basic 6.0 では Microsoft MAPI Controls 6.0 を使用して居た 一方 Visual Basic.NET では System.Web.Mail 名前空間の SmtpMail クラスを使用しメールの送信機能を実装する事が出来る Mail.SmtpMail クラスは CDOSYS (Collaboration Data Objects for Windows 2000) メッセージコンポーネントを使用して メール送信を実現して居る 其処で 此処では Visual Basic.NET でメールの送信機能を持ったアプリケーション ( 図 1) を作成する方法を紹介する 図 1 上図の 送信 ボタンをクリックすると メールが送信され 送信終了のメッセージボックスが表示される 送信 ボタンの実装コードは以下の通りで有る 猶 事前に [ 参照設定 ] で [System.Web] を追加して置く必要が有る Private mm As New System.Web.Mail.MailMessage Private ma As System.Web.Mail.MailAttachment Private file As String Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click Try mm.from = txtform.text mm.to = txtto.text -5-

mm.subject = txtsubject.text mm.body = txtbody.text If file <> Nothing Then ma = New System.Web.Mail.MailAttachment(file, Web.Mail.MailEncoding.Base64) mm.attachments.add(ma) End If System.Web.Mail.SmtpMail.Send(mm) txtform.clear( ) txtto.clear( ) txtsubject.clear( ) txtbody.clear( ) Me.Refresh( ) MessageBox.Show(" メールを送信しました ", " 送信終了 ") Catch ex As Exception MessageBox.Show(" 送信できませんでした ", " エラー ") End Try End Sub リスト 1 MailMessage クラスの From プロパティに差出人 ( 受信者 ) を To プロパティに送信先を Subject プロパティにメールの件名を Body プロパティにメールの本文を夫々れ設定する 亦 Attachments プロパティで 本文と共に送信する添付ファイルを設定する 上記 ( リスト 1) のコードを実装し 図 1 の 送信 ボタンをクリックすると メールが送信される 然して 各テキストボックスのデータが削除され 図 2 の送信完了の通知が表示される 図 2 猶 リスト 1 を実装しても 添付ファイルを送信する事は出来ない 次は 下記のコードを実装して 添付ファイルを指定出来る様にする Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button2.Click Dim ofd As New OpenFileDialog ofd.initialdirectory = "C: work" ofd.filter = " 総てのファイル (*.*) *.*" ofd.title = " 添付するファイルを選択して下さい " ofd.restoredirectory = True If ofd.showdialog( ) = DialogResult.OK Then file = ofd.filename txtattachment.text = System.IO.Path.GetFileName(file) End If End Sub リスト 2-6-

図 1 の... ボタンをクリックすると ダイアログボックス ( 図 3) が開き 添付するファイルを指定する 図 3 上記 ( リスト 2) の ofd.initialdirectory = "C: work" でダイアログボックスが表示された時のデフォルトフォルダを指定する ofd.filter = " 総てのファイル (*.*) *.*" で [ ファイルの種類 ] に表示される選択肢を指定し ofd.title = " 添付するファイルを選択して下さい " でダイアログボックスのタイトルを指定する 然して If ofd.showdialog( ) = DialogResult.OK Then の ofd.showdialog( ) でダイアログボックスを表示し [OK] ボタンがクリックされると file = ofd.filename で選択されたファイル名 ( パス ) を取得し txtattachment.text = System.IO.Path.GetFileName(file) で 拡張子を含むファイル名而巳をテキストボックスに表示する ( 図 4) ファイルパスからファイル名 ( 拡張子を含む ) を取得する場合 System.IO 名前空間の Path クラスで GetFileName メソッドを使用する 図 4 此れに依り 図 1 のアプリケーションで添付するファイルを指定し メールで送信する事が出来る -7-

Visual Basic.NET でのメール送信 2 System.Web.Mail 名前空間の SmtpMail クラスを使用 C# や VB.NET のプログラムからインターネット電子メールを送信する場合には System.Web.Mail 名前空間の SmtpMail クラスの Send メソッドを使用する 此のクラスは Web と謂う文字列が入って居る名前空間に属して居るが Web アプリケーション丈で無く 何の様な種類のプログラム中からも利用する事が出来る 例えば Windows アプリケーションやコンソールアプリケーションから利用しても問題は無い 此の SmtpMail クラスは 元々 OS に組み込まれて居る CDOSYS(Collaboration Data Objects for Windows 2000) メッセージコンポーネントを使用してメッセージを送信する物で 此のクラス自身が電子メールの送信機能を持って居る訳では無い 此の為 OS より此の機能を取り除く様な操作を行って居る場合 此のクラスを通して電子メールを送信する事が出来ない可能性が有る 此のクラスは クラスライブラリの DLL で有る System.Web.dll の中に含まれて居るので 此れが参照されて居ない場合は 参照をプロジェクトに追加する必要が有る Visual Studio.NET では メニューの [ プロジェクト ]-[ 参照の追加 ] を実行して System.Web.dll を追加する コマンドラインからコンパイルする場合は csc コマンドや vbc コマンドで /r:system.web.dll と謂うオプションを追加する Send メソッドでは 下記の様に仕て電子メールを送信する事が出来る 電子メールを送信する為のコード (Visual Basic.NET 版 ) System.Web.Mail.SmtpMail.Send( _ "system@sample.domain", _ "kodai@sample.domain", _ " プログラムから送信する電子メール ", _ " 此の電子メールはプログラムから送信して居る " & vbcrlf _ & " 此れは本文の 2 行目です " & vbcrlf) 電子メールを送信する為のコード (C# 版 ) System.Web.Mail.SmtpMail.Send( "system@sample.domain", "kodai@sample.domain", " プログラムから送信する電子メール ", " 此の電子メールはプログラムから送信して居る r n" + " 此れは本文の 2 行目です r n"); 観て解る通り 僅か 1 つのメソッド呼出を記述する丈で電子メールの送信が実現する事が出来る Send メソッドのパラメータには 上から順に 下記の項目を文字列で指定する 送信者のメールアドレス 信者のメールアドレス 名 (Subject) 本文 此の方法で送信すると プレーンテキストの電子メールと仕て送信されるので HTML のタグ等を記述する意味は無い 本文に渡す文字列は 電子メールの仕様が要求する制限を意識して記述する必要が有る 1 行の文字数は改行を含まないで 78 文字以下で有る可きで 998 文字を超えては成らない 亦 改行は 復帰 (CR) -8-

+ 改行 (LF) と謂うシーケンスでなければ成らない VB.NET では vbcrlf を C# では " r n" を使用すると良い (RFC 2822 参照 ) 此の方法を使用した場合 電子メールは 其のプログラムを実行して居る Windows 上で稼働する IIS の SMTP 機能を経由して送信される IIS が使用する Inetpub mailroot Pickup ディレクトリに送信し度いメール本体が書き込まれ 其れを IIS の SMTP 機能が拾い上げて送信して下れる訳で有る 其の為 IIS がインストールされて居なかったり SMTP 機能が停止されて居たりする場合には 電子メールを送信する事が出来ない ( 但し 次項で述べて居る様に SmtpServer プロパティを利用すれば 此の方法でも IIS の SMTP 機能を使用せずに電子メールの送信が可能で有る ) 更に高度な電子メール送信 SmtpMail クラスの Send メソッドには オーバーロードされた今 1 つのバリエーションが有る 此れを用いると 更に木目細かく電子メールの内容を指定する事が出来る 此のバリエーションは パラメータに 4 つの文字列では無く MailMessage クラス (System.Web.Mail 名前空間 ) のインスタンスを 1 つ丈渡す様に成って居る 木目細かい条件は 此のインスタンスに設定する事が出来る 宛先を Cc に指定したり 添付ファイルを付けたりする事も可能だ 以下に此れを使用した例を示す 更に詳細な設定で電子メールを送信する為のコード (Visual Basic.NET 版 ) System.Web.Mail.SmtpMail.SmtpServer = "tina.sample.domain" Dim message As New System.Web.Mail.MailMessage( ) message.from = "system@sample.domain" message.to = "kodai@sample.domain; shima@sample.domain" message.cc = "okita@sample.domain; mori@sample.domain" message.subject = " プログラムから送信する電子メール " message.bodyencoding = System.Text.Encoding.UTF8 message.bodyformat = System.Web.Mail.MailFormat.Html message.body = "<html><body><p> 此の電子メールはプログラムから送信して居る </p>" _ & vbcrlf & "<p> 此れは本文の 2 行目です </p></body></html>" & vbcrlf System.Web.Mail.SmtpMail.Send(message) 更に詳細な設定で電子メールを送信する為のコード (C# 版 ) System.Web.Mail.SmtpMail.SmtpServer = "tina.sample.domain"; System.Web.Mail.MailMessage message = new System.Web.Mail.MailMessage( ); message.from = "system@sample.domain"; message.to = "kodai@sample.domain; shima@sample.domain"; message.cc = "okita@sample.domain; mori@sample.domain"; message.subject = " プログラムから送信する電子メール "; message.bodyencoding = System.Text.Encoding.UTF8; message.bodyformat = System.Web.Mail.MailFormat.Html; message.body = "<html><body><p> 此の電子メールはプログラムから送信して居る </p> r n" + "<p> 此れは本文の 2 行目です </p></body></html> r n"; System.Web.Mail.SmtpMail.Send(message); 此処では 先ず SmtpMail クラスの SmtpServer プロパティに tina.sample.domain を代入して居る 此れは メール送信に使用する SMTP サーバを独自に指定する方法を示して居る 既に述べた様に -9-

通常は IIS の SMTP 機能を経由して送信されるが 此のプロパティに使用し度い SMTP サーバを指定して置くと 其れを経由して送信される事に成る 此の SmtpServer プロパティは 前の例で使用した 4 つの文字列をパラメータに取る Send メソッドでも有効で有る 次がメール本体の作成で有る 先ず MailMessage クラスのインスタンスを作成し 其のプロパティでメールに必要な情報を設定して行く 各プロパティの設定は次の様に成って居る From プロパティ送信者の電子メールアドレスを記述する To プロパティ送信先の電子メールアドレスを記述する 複数有る場合はセミコロンで区切って続けて記述する事が出来る 此の書式は 次の Cc プロパティ等でも同じで有る Cc プロパティカーボンコピーの宛先と成る電子メールアドレスを記述する Subject プロパティ件名 (Subject) を記述する BodyEncoding プロパティ電子メールの本文に使用する文字のエンコーディング方式を指定する 此処には System.Text 名前空間の Encoding クラスのインスタンスを指定する 此の例では UTF-8 を指定して居るが 日本語の電子メールでは通常 ISO-2022-JP を使用する ( System.Text.Encoding.UTF8 の代わりに System.Text.Encoding.GetEncoding("ISO-2022-JP") を使用する ) BodyFormat プロパティ System.Web.Mail 名前空間の MailFormat 列挙体の値に依り メッセージのフォーマットを指定する MailFormat.Html なら HTML メールで有る事を示す (MailFormat.Text なら プレーンテキストのメールで有る事を示す ) Body プロパティ此のプロパティには本文を指定するが BodyFormat プロパティで MailFormat.Html を指定した場合は 正しく HTML メールと成る様な文字列を設定する必要が有る ( 此の例は 本来省略出来ない head 要素を記述して居ない等 厳密に謂うと余り正しい HTML に成って居ない ) 電子メールに添付ファイルを添付する場合 最後に メールに添付ファイルを添付する場合に付いても少し触れて置く 此れには 上記のコードの最後に有る Send メソッド呼び出しの直前に 次の様なコードを追加すれば良い 此処では画像ファイル (c: sample.png) を添付ファイルと仕て居る 添付ファイルを添付する為のコード (Visual Basic.NET 版 ) Dim attachment As New System.Web.Mail.MailAttachment( _ "c: sample.png", _ System.Web.Mail.MailEncoding.Base64) message.attachments.add(attachment) 添付ファイルを添付する為のコード (C# 版 ) System.Web.Mail.MailAttachment attachment = new System.Web.Mail.MailAttachment( @"c: sample.png", System.Web.Mail.MailEncoding.Base64); message.attachments.add(attachment); -10-

添付ファイルは System.Web.Mail 名前空間の MailAttachment クラスを用いて指定する 1 つの添付ファイルに付き 此のクラスのインスタンスを 1 つ作成する 然して MailMessage オブジェクト ( 上記のコードでは変数 message) の Attachments プロパティに 此等のインスタンスを Add メソッドで追加するので有る 此れに依り Send メソッドで送信される時に 指定された添付ファイルが添付される 具体的に添付ファイルの内容を指定するには MailAttachment クラスのコンストラクタのパラメータを使用する 此のコンストラクタには ファイル名而巳を渡す物と ファイル名とエンコード方式を渡す物の 2 つのバリエーションが存在する 後者の方のコンストラクタを使う場合 エンコード方式の指定には System.Web.Mail 名前空間の MailEncoding 列挙体を使用する 此処には Base64 方式を意味する MailEncoding.Base64 と uuencode 方式を意味する MailEncoding.UUEncode の値を指定する事が出来る 併し uuencode 方式は RFC で定義されたエンコード方式ではないので 特に必要が無ければ 使用しない方が良い ( コンストラクタでファイル名而巳を指定する場合 リファレンスマニュアルには 既定では Encoding プロパティは UUEncode に設定される と記述されて居るが 実際には Base64 方式が既定と成って居る様だ 方式を厳密に指定し度い場合には 省略しない方が安全で有る ) 猶 此処で謂うエンコードと BodyEncoding プロパティで謂うエンコードは意味が異なる事に注意しなければ成らない 前者は バイナリデータをテキストで表現する事を意味し 後者は文字を何の様なビット列で表現するかを意味する 使用ライブラリ :SmtpMail クラス (System.Web.Mail 名前空間 ) 使用ライブラリ :MailMessage クラス (System.Web.Mail 名前空間 ) 使用ライブラリ :Encoding クラス (System.Text 名前空間 ) 使用ライブラリ :MailFormat 列挙体 (System.Web.Mail 名前空間 ) 使用ライブラリ :MailAttachment クラス (System.Web.Mail 名前空間 ) 使用ライブラリ :MailEncoding 列挙体 (System.Web.Mail 名前空間 ) -11-

デフォルトメーラーを起動する方法 デフォルトのメーラーを使用してメールの送信を行う場合 Visual Basic 6.0 では Microsoft MAPI Controls 6.0 を使用して居た 一方 Visual Basic.NET では Process クラスの Start メソッドを使用して新規メール作成ウィンドウを表示する 其処で 此処では 図 1 のテキストボックス内のデータを本文の値に設定した新規メール作成ウィンドウを表示する方法を紹介する Process クラスの Start メソッドに mailto: で始まる文字列を指定する事で デフォルトのメーラーを起動する事が出来る メーラーの新規メール作成ウィン図 1 ドウを起動する際 mailto: の後に指定したメールアドレスが宛先欄に記述される 亦 件名 (subject) や本文 (body) 等を記述する場合 宛名 (mailto: メールアドレス ) の後に? で続けて記述する 実装コードは以下の通りで有る Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click Dim strbody As String strbody = textbox1.text Process.Start("mailto:Test@xxx.co.jp?subject= メーラーの起動 &body=" & strbody) End Sub リスト 1 リスト 1 の Process.Start("mailto:Test@xxx.co.jp?subject= メーラーの起動 &body=" & strbody) で 宛先 (mailto:test@xxx.co.jp) メールの件名 (subject= メーラーの起動 ) 本文 (body=strbody: テキストボックス内のデータ ) の値を指定した新規メールウィンドウが表示される 上記を実装し メーラーの起動 ボタン ( 図 1) をクリックすると図 2 が表示される 図 2-12-

上記では 改行されたデータも 図 2 の様に改行されずに表示される 此れは 新規メール作成ウィンドウを起動する場合 総ての文字が其の儘使用出来るとは限らないからで有る 其の儘使用出来ない文字は 文字コード表示に置き換えて使用する必要が有る 例えば 本文等で使用する 改行 は %0D%0A と謂う文字コード表示に置き換える 図 1 の様に改行されたデータを其の儘新規メール作成ウィンドウに表示する場合 Dim strbody As String strbody = textbox1.text を下記のコードに変更する Dim txtlines( ) As String Dim n As Integer txtlines = TextBox1.Lines For n = 0 To txtlines.getupperbound(0) strbody = strbody & txtlines(n) & "%0D%0A" Next リスト 2 リスト 2 を実装し 図 1 の メーラーの起動 ボタンをクリックすると 図 3 の様に表示される 参考資料 本稿の内容に関連する RFC( 英文 ) で有る RFC 2821 "Simple Mail Transfer Protocol" RFC 1939 "Post Office Protocol - Version 3" RFC 2060 "INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1" RFC 2822 "Internet Message Format" RFC 2045 "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies" RFC 2046 "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types" RFC 2047 "MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text" RFC 4289 "Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures" RFC 2049 "Multipurpose Internet Mail Extensions (MIME) Part Five: Conformance Criteria and Examples" 図 3-13-