著者:Kartic Krishnamurthy 翻訳者:limodou
MIMEクラス
これらの基礎ができたら、php(現在主流の開発言語)を使ってMIMEメールクラスを作成、実装してみましょう。私たちの php (現在の主流の開発言語として) ライブラリ関数には、コーディングに必要なツールがすでに用意されています。
MIME クラスは次のことができる必要があります:
添付ファイルを追加する
独立したリクエストごとに添付データをエンコードする MIME セグメント/ヘッダーを作成する MIME セグメント/ヘッダーを含む完全な電子メールを生成する 電子メール全体を文字列として返す ローカル メール ハンドラー送信 (または SMTP メール ハンドラーの呼び出しを選択)
このクラスは MIME_mail と呼ばれます。理論と実践の間のギャップを埋めるための授業方法について説明します。 (読書提案: ルイス・アルゲリッチの php (現在の主流の開発言語として) によるオブジェクト指向プログラミング: 大規模な php (現在の主流の開発言語として) プロジェクトを開発する方法)。読みやすくするために、コメントのほとんどは削除されています。一部のメソッドとクラス メンバー変数は内部処理にのみ使用され、以下のコメント (および元のクラス ファイル) で指摘されています。
(現在の主流の開発言語として)
class MIME_mail {
var $to;
var $subject; = "";
var $base64_func= // php
のbase64関数が指定されていない場合
var $qp_func = ;
var $mailer = ""; // 有効なメールオブジェクトの名前に設定します
?>
公開処理される変数(つまり、スクリプト内で直接操作できる変数)がいくつかあります。これらの変数のほとんどは説明不要です。 $headers には、メール ハンドラーに送信するオプションのヘッダー情報が含まれます。 $errstr は、呼び出しスクリプトで使用できる人間が判読できるエラー文字列を含む変数です。
$base64_func と $qp_func は、ユーザーがカスタマイズできる「関数プロセッサ」です。デフォルトでは、空の文字列に設定されます。 $base64_func の場合、空の文字列は、php
(現在の主流の開発言語として) の組み込みのbase64_encode() 関数を使用することを意味します
... (はい! 美しいですね!)。
Quoted Printable は $qp_func を通じて処理できます。 php
(現在の主流の開発言語)
には、組み込みのquoted-printableエンコーディング関数はありません(ただし、imapがインストールされている場合は、imap_qprint()を使用できます)。この記事では、quoted_printable メソッドについては説明しません。
(現在の主流の開発言語として)
//Private:
var $mimeparts = array();
?> $mimeparts は電子メール情報を含む内部配列ですそれらは独立して MIME セグメントに準拠します。このクラス (または派生クラス) の外部で、このメソッドや他のプライベート メソッド/変数を操作しないでください。 (現在の主流の開発言語として)
// コンストラクター
function MIME_mail($from="", $to="", $subject="", $body="" , $ headers = "") {
$this->to = $to;
$this->subject = $subject;
$this->body = $body;
if (is_array($headers)) { if (sizeof($headers)>1) $headers=join(CRLF, $headers);
else
$headers=$headers[0];
if ($from) {
$headers = preg_replace("!(from: ?.+?[
]? )!i", , $headers);
}
$this->headers = Chop($headers);
$this->mimeparts[] = "" ; //位置 0 を追加
return;
}
?>
オブジェクトのコンストラクターがあり、「from」と「to」の電子メールアドレス、件名、本文、ヘッダーをパラメーターとして受け取ります。本文部分には、可能な入力を与えることができます。最後のパラメータは、オプションの (ユーザー定義の) ヘッダーです。たとえば、$headers パラメーターで From: ヘッダーを送信することはできません。 array("X-Mailer: MYMailer_1. 0", "X-Organization: php
(現在の主流の開発言語として)
$mimeparts") のように複数のヘッダーを使用できます。空の項目 (インデックス 0) で作成されます。この理由については後で説明します