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

BOOKをみる

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


72 バーへの接続処理を行って、画面を終了 せずに接続状態のまま一定時間が経過す ると、SMTP サーバーとの接続タイム アウトが発生し、自動的に接続が解除さ れてしまうからである。つまり、送信処 理自体が行えなくなるという可能性があ る。 ・ 他のメールサービスを使用する際の 注意点  本稿では、SMTP サーバーとして Gmail を使用したため、記載のソースで メール送信機能を実現することができ た。  ただし、Gmail 以外のメールサービス でメール送信プログラムを作成する場合 には、次の点に注意が必要となる。  例えば、本稿で記載したソースを参考 に、自身が使用したいメールサービスの ホスト名、ポート番号を設定し、メール 送信処理を実装するとしよう。その際、 SMTP サーバーへの接続は正常に行え るが、TIdSMTP のSend メソッドを呼 び出しても、指定したメールアドレスに、 メールが届かないケースやエラーが発生 するケースがある。  そういった場合には、送信元メールア ドレスを指定する必要がある。送信元 メールアドレスの指定方法については、 ソース6を参考にしてほしい。【ソース6】 6.最後に  今回は、Indy を利用したメール送信 の実装方法を紹介した。  本稿で説明や記載している送信プログ ラムを参考にしたり、変更いただければ、 実践的なメール自動送信の仕組みも容易 に実装することができる。  例えば、注文システムで、注文確認メー ルを自動送信したい場合には、注文ボタ ンの処理ロジックの後に、本稿のメール 送信プログラムを追加して送信内容を設 定するだけで実現できる。  また、今回はGmail を例にメール送 信機能の実装を行ったが、もちろん他の メールソフトでも利用することができ る。  メールを連携した機能実装を検討され る場合には、本稿の技術情報を役立てて いただければ幸いである。 M  そのために本稿では、まず先述のファ イル添付で作成したロジックのUses 節 にIdText を追加する。そして、ソース 4 の送信ボタン押下時処理のメソッド内 において、TIdText 型の変数TEXT1、 TEXT2 を定義しておく。 ・ ContentType プロパティ’multipart/ mixed’  次に、IdMessage1 のContentType プ ロパティを’multipart/mixed’に設定す る。ContentType プロパティでは、どの ようなコンテンツの種類で記述を行うか が指定できる。  ’multipart/mixed’を指定すると、複 数のコンテンツで記述を行うことが可能 になる。今回の場合、複数のコンテンツ とは、通常のメール文とhtml 形式のメー ル文で記述を行うという意味になる。  メール文を設定するには、変数TEXT をTIdText として生成し、TEXT の ContentType プロパティを通常のメール 文の場合は’text/plain’、html 形式のメー ル文の場合は’text/html’に設定する。  後は、本文の設定と文字化け防止のた めの、文字コードとエンコーディングの 設定を忘れずに行えば、html を利用し たメール送信が完成である。【ソース5】  最後に、ソース5 でコンパイルと実行 を行い、メール送信を行った結果が図 13 である。【図13】  このように、html を利用することで、 文章だけでは伝えづらい内容も、視覚的 にわかりやすく表現することができる。 5.補足 ・SMTP サーバーへの接続と接続解除の タイミング  本稿では、送信処理の直前にSMTP サーバーへの接続を行い、送信処理の直 後にSMTP サーバーとの接続解除を 行っている。  一見、画面表示時に接続を行い、画面 終了時に接続解除を行ったほうが、レス ポンスがよくなるのではないかと思われ る方もいるかもしれない。  しかし、本稿ではあえて、送信処理の 直前と直後のタイミングで接続と接続解 除を行っている。  その理由は、画面表示時にSMTP サー