【DO!BOOK・ページリンク】
migaro_tech2013   72 / 100

BOOKをみる

10秒後にBOOKのページに移動します


70 ファイルの添付  メール送信において、送信するメール にファイルを添付する機会が多くある。 ファイルの添付は、TIdAttachment の Create メソッドを使用するだけで、容 易に実現が可能である。  今回は例として、C ドライブに AttachmentFile というフォルダーを作 成し、その中にSAMPLE.jpg というファ イルを配置する。そして、SAMPLE. jpg が実際に送信されたメールに添付さ れているかを確認する。 ・TIdAttachment のCreate メソッド  まず、TIdAttachment を使用するた めには、前章のソースのUses 節に IdAttachmentFile を追加する。そして、 メール送信処理の前にTIdAttachment のCreate メソッドを呼び出す。  Create メソッドは、第1 引数に TIdMessage コンポーネントの MessageParts プロパティを指定する。 第2 引数には添付ファイルのパスを設定 する。添付ファイルのパスは、絶対パス、 相対パスどちらでも使用できる。また、 添付ファイル名には日本語名を使用する ことも可能である。【ソース4】  ソース4 のロジックで、実際に送信し たメールにファイルが添付されるかを確 認してみよう。  まずソース4 でコンパイルと実行を行 い、送信内容を図8 で設定する。送信ボ タンを押下した結果が図12 である。 【図12】  このように、送信メールにファイルを 添付するためには、メール送信ロジック に、TIdAttachment のCreate メソッ ドを呼び出すロジックを1 行追加するだ けで、容易に実装できる。 htmlの利用  さらに、Indy を使ったメール送信で は、html を利用したメール送信も可能 である。html を利用すると、文字の装 飾や表の作成など、送信内容の幅が広が る。  html を利用するためには、メッセー ジのコンテンツタイプをhtml 型に設定 する必要がある。 SMTP サーバーへの接続処理後に行う。  まず、Clear メソッドで初期化を行っ た後、図7 のプロパティを設定する。今 回、送信先のメールアドレス、件名、本 文は画面の入力値をそれぞれセットす る。【図7】  また、もし複数の宛先に送信したい場 合は、複数の送信先のメールアドレスを 「,(カンマ)」で区切ることにより実現 可能である。  後は、送信情報を設定した IdMessage1 を引数として、IdSMTP1 のSend メソッドを呼び出すだけでメー ル送信を行うことができる。【ソース2】  ソース2 でコンパイルと実行を行い、 送信情報の設定を行った画面が図8 であ る。そして、図8 の画面から送信ボタン を押下し、メール送信を行った結果が図 9 である。【図8】【図9】 ・文字コードとエンコーディング  図9 を見ると、件名は画面で入力した 内容が表示されているが、本文が「?????」 という形で文字化けしているのがわかる だろうか。  このような本文の文字化けを防ぐため には、文字コードとエンコーディングの 設定を追加で行う必要がある。図7 のプ ロパティ設定にCharSet プロパティ、 ContentTransferEncoding プロパティ の設定を新たに追加する。【図10】【ソー ス3】  ソース3 でコンパイルと実行を行い、 図8 の送信内容で、再びメール送信を 行った結果が図11 である。【図11】  図11 では、IdMessage1 のプロパティ に文字コードとエンコーディングの設定 を新たに追加したため、本文が文字化け せずに表示されている。このように、メー ル送信内容の設定では、TIdMessage コンポーネントで文字コードやエンコー ディングの設定が重要である。 4. メール送信プログラム の作成(応用編)  本章では、前章の内容を応用したプロ グラムの作成方法を紹介する。その際、 前章で作成したプロジェクトとソースを 流用し、説明を行う。 場合は、SSL の設定を行わなければメー ル送信が実行できない。そのため、 TIdSSLIOHandlerSocketOpenSSL コ ンポーネントもForm1 に配置する必要 がある。【図3】  SSL(Secure Socket Layer) とは、 インターネット上で送受信を行うデータ を暗号化する技術のことである。データ の送受信を暗号化することにより、第3 者によるデータの盗聴や改ざんなどを防 ぐことができるため、安全にデータ通信 が行える。 ・TIdSMTP コンポーネント  SMTP サーバーへの接続は図4 のプ ロパティを設定し、Connect メソッド を実行するだけで接続できる。SMTP サーバーから接続解除を行う場合には、 Disconnect メソッドを実行するだけで ある。【図4】  また、今回はメール送信にSSL を使 用するため、IOHandler プロパティに 図3 で配置したIdSSLIOHandlerSocket OpenSSL1 を指定し、UseTLS プロパ ティにutUseExplicitTLS を設定する。 ・ TIdSSLIOHandlerSocketOpenSSL コンポーネント  SSL の設定についても、SMTP サー バーへの接続設定と同様に、送信ボタン 押下時(TButton のOnClick イベント) に行う。  SMTP サーバーへの接続の前には、 図5 のプロパティを設定する。【図5】  今回は、送信ボタン押下時(TButton のOnClick イベント)の最初にSMTP サーバーの設定と接続処理を記述し、最 後に接続解除処理を記述する。 【ソース1】 メール送信内容の設定  SMTP サーバーへの接続が完了する と、次はメールの送信内容について設定 する必要がある。送信内容を設定するた めに、TIdMessage コンポーネントを Form1 に配置する。【図6】 ・TIdMessage コンポーネント  送信情報の設定は、送信ボタン押下時 (TButton のOnClick イベント) の