イメージ図はIndy 10を利用した例ですが、Synapseを利用した例も同様のイメージです。
はじめに
Delphiに付属するIndyは、メールの送信(SMTP)や受信(POP3)の動作処理を行うコンポーネントを提供しています。DelphiのIDE開発環境と併せることで、容易にかつ短時間でメール機能を構築することができます。
Delphi 7に付属するIndy 9を利用したSMTP送信の実現については、CodeZineにも寄稿しているクジラ飛行机氏が、氏のWebサイト(Indy9でメール送信)で詳細を述べています。
Indyの現バージョンであるIndy 10のSMTP機能では、SMTP認証、SMTP over SSL/TLSといった昨今必須になりつつある機能が拡充され、サポートされています。本稿の目的の一つは、Indy 10におけるメール送信機能の実現と、その機能を実験してみるというものです。もう一つの目的は、IndyのようなSMTP機能の実現コンポーネントと、日本語文字コード変換機能の実装についての検討です。本稿では、Indyコンポーネントの対照としてSynapseライブラリ(以下、Synapse)を用いた実験を行います。SynapseによるSMTPの実現方法は、Indyに勝るとも劣らずに、平易に実現できます。特に日本語文字コードの処理については、Indyとまったく異なる処理をしています。
対象読者
- SMTP認証を実現したい人
- SMTP over SSL/TLSを実現したい人
- 日本語でのメール送信機能を実現したい人
- Indyコンポーネントの使い方を知りたい人
- Synapseの使い方を知りたい人
必要な環境
Indy 10、Synapseの入手
開発環境は、Windows XP(SP2)上でDelphi 7とIndy 10(10.1.5)コンポーネント、およびSynapse(37b3)を使用しました。両者ともオープンソースのフリーウェアです。
- The Indy Project
- Ararat Synapse
DLL、バイナリの入手
SSL機能を実現するために、以下のDLL、バイナリを入手します。OpenSSL(0.9.7)のWin32バイナリの配布は複数のサイトで行われています。下記のサイトはその一例です。
- Indy用 : indy OpenSSL096m.zip
- Synapse用 : Win32_OpenSSL_v0.9.7i.exe
jconvert.pas、TPzConvの入手
文字コードの変換を実現するために、jconvert.pas(ユニット)、または、TPzConv(コンポーネント)を入手します。
- jconvert.pas : Delphi用文字コード変換ライブラリユニット
現在、作者のサイトからダウンロードはできません(リンクが切れています)。以下のサイトで入手は可能ですが、開発されたアプリケーションの中で独自に改良したものをソースとして添付されているのが現状です。
- jconvert.pasがダウンロード可能なサイト
- Front Pageの「コンパイル」ページ
- クジラ式 Delphi 資料の 「Indy9 でメール送信」ページ
- Dear Mobile Revolution
- TPzConvがダウンロード可能なサイト
- PzFactoryの「Delphi VCL」ページ
併せて「iconv.dll」もダウンロードしてください。「iconv.dll」は、Synapseで2バイトコードを扱う場合に必要です。
「libiconv」というGNU LGPLに従う、エンコードコンバートライブラリが存在します。簡単に言えば、漢字コード変換ライブラリです。CP932/EUC/JIS/UTF8その他の、相互変換が可能です。「iconv.dll」はその「libiconv」をWindowsのDLLとしてコンパイルしたものです。