2008/10/12(日)ただ簡単にメールを送りたいだけだったのにPHP【未分類】spokPHPで簡単にメールを送りたいだけなのに。次回のメジャーバージョンアップは、絵文字ですが、本業が忙しく、しばらく後になりそうです。それ以外は機能拡張の予定もなくなってきました。後は安定性の向上です。日本語高機能PHPライブラリQdmailはそれなりに進化しました。当初は、日本語を簡単に扱いたいという点からはじまり、途中からCakePHP対応、デコメ対応、そして電子署名。あるサイトのメールフォームに打ち込んでもらったメールアドレスに、添付ファイルを送信する、というサービスを作るのに、なんと苦労したことか。mail関数、mb_send_mail関数も、デフォルトでは役に立たず、Pear::Mailは、メールの内部構造(マルチパート構成)をきちんと理解しなければ使いこなせず。日本語で添付ファイルを送りたいだけなのに。文字コードなんて気にせずに。それをかなえるための努力は日曜プログラマにしては、相当困難な道のりでした。マルチパートの理解、文字コードの理解(特に改行コード!)、SMTPの理解、各種RFCの理解、MTAの実装の理解(未だ足りない)、各種メーラーの実装の把握、プログラミングテクニックにおけるセキュリティの問題、効率的コードの問題、メンテナンス性の髙コードの構築、利用されるOSの理解、PHP4とPHP5の違い、PHPフレームワークの理解それらでもうまくいかず、多くの方からフィードバック、エラー報告などをいただきました。一部はまだ未解決ですが、それなりに他のPHPメールライブラリよりも、「文字化けしない」「簡単」という点は、ライバルを大きく引き離したのではないかと自負しています。Qdmailマルチパートエンジン(再帰的マルチパート処理)Qdmailでは、複雑なマルチパートを再帰的に処理しています。複雑な何通りかのマルチパート雛型を用意しておき、簡単なメールを送る場合でも、いったん複雑なマルチパートを作り上げながら、不要なものを削除していくという処理をしています。そのせいで、処理自体はかなり重くなっていますが、柔軟性は高く、現在対応できないマルチパート構成のメールを送信しようとおもったら、ほんのちょっとの改造で対応することができます。このコアな部分を最初に作り込んだことがQdmailの開発が短期間で済んだ一番の理由であり、このマルチパートエンジンこそが、Qdmailの心臓部分です。コアのマルチパートエンジンは、バージョンゼロの初期から現在まで、ほとんど変わっていません。(怖くて変えられない、というのが正解なのですが。)ユーザーインターフェイスのコード量が多いしかし、コアな部分のコードは、4000行を超えるコードの3分の1程度であり、その他はすべてユーザーインターフェイスとエラー処理に使われています。各種フレームワーク対応はもちろん、オブジェクト指向形式、easy形式、qd_send_mail形式と、3つの操作方法を提供しました。「初心者でも簡単に(Quick)、玄人には細かく設定できるように(Detailed)」というQdmailの開発思想からです。プログラミング上は、まずオブジェクト指向形式ですべての機能が使えるようにし、easyメソッドでは、easy基本メソッドからOOP形式でQdmailを呼び出す方式にし、そしてqd_send_mailでは、OOPは自ら呼び出さず、easyメソッドを呼び出す、完全入れ子形式にしています。easyText,easyHtml,easyDeco.....↑qd_send_mailこうすることで、バグが例え出たとしても、原因が特定されやすい、という構造にしてあります。動作は重くなりますが、それよりもスパゲッティになることの方が怖く、「リスクは集中させて管理する」という方針で作りました。環境の違い....それにしても、インターネット上には様々な環境でPHPが動作していることを知りました。した環境の違いを吸収することの難しさを学びました。大事なのは、スクリプト自信が、「今、自分はどんな環境にいるのか」ということを自動判別させることでしょう。Qdmailをご紹介ください。日曜プログラマにとってみれば、皆様に使われることが一番うれしいです。単純ですが、紹介されるとやっぱりうれしいです。(一方で、もし違う環境でうまく動作しなかったら...と恐怖でもあるのですが)もし、Qdmailを使ってみて、有用だと感じたら、ぜひブログなどでご紹介ください。うまく動作しなかったら、ぜひフィードバックいただければと思います。午後2時01分phpを勉強はじめています。http://www.cpa-lab.com/tech/0180/tb/※お手数ですが、SPAM防止のためURLの後ろに「.c9」を追加してください。2.03.Infomation管理人のメインサイト。画像アルバムコンテンツPaginatorの使い方。31最近の記事さくらインターネットで空メールエラーmbstrings関数をPHPで使う際の必見サイトQdmailサイトと相互リンクただ簡単にメールを送りたいだけだったのにPHPPHPフレームワークで日本語メール送信。anonymousissetを正しく理解する。ほんじissetを正しく理解する。ほんじissetを正しく理解する。へびにっきissetを正しく理解する。