ホームページ  >  記事  >  バックエンド開発  >  PHP を使用して MIME メールを送信する (4)_PHP チュートリアル

PHP を使用して MIME メールを送信する (4)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:31:12871ブラウズ

コア: メソッド
MIME ヘッダーの生成、MIME セグメント ヘッダーの生成、および最終的な電子メール メッセージの生成をいくつかのモジュールに分割します。このメソッドの実装は、前に説明した MIME の基本から直接得られます。

(現在の主流の開発言語として)

functionattach($data, $description = "", $contenttype = OCTET, $encoding = BASE64, $disp = ) {
if (empty ( $data))
return 0;
if (trim($contenttype) == )
$contenttype = OCTET ;
if (trim($encoding) == )
$encoding == BIT7; )
$emsg = $data;
elseif ($encoding == QP)
$emsg = $$this->qp_func($data);
if (!$this - >base64_func) # ユーザー定義関数があるかどうかを確認します
$emsg = Base64_encode($data);
else
$emsg = $$this->base64_func($data);
$emsg = chunk_split( $ emsg);
//content-type が text/plain かどうかを確認し、charset が指定されていない場合は、デフォルトの CHARSET を追加します
if (preg_match("!^".TEXT."!i", $contenttype) && !preg_match ( "!;charset=!i", $contenttype))
$contenttype .= "; charset=".CHARSET;
$msg = sprintf("Content-Type: %sContent-Transfer-Encoding: %s%s%s%s",
$contenttype.CRLF,
$encoding.CRLF,
((( $description) && (BODY != $description))?"Content-Description: $description".CRLF:""),
($disp?"Content-Disposition: $disp".CRLF:""),
CRLF .$emsg.CRLF);
BODY==$description? $this->mimeparts[0] = $msg: $this->mimeparts[] = $msg ; ;
}

?>

このメソッドを詳しく見てみましょう (他のほとんどのメソッドと同様):

このメソッドで使用されるパラメータは次のとおりです:
添付された実際のデータ ($data)
データContent-Description ヘッダーに対応する説明 ($description)
Content-Type ヘッダーで使用されるデータのコンテンツ タイプの値 ($contenttype)
Content-Transfer-Encoding で使用されるエンコード値 ($encoding)
使用Content-Disposition ヘッダー $disp のレイアウト値は INLINE または ATTACH にすることができ、どちらも BASE64 や TEXT などの値は定数として添付された .def ファイルで定義されます。データのエンコードにどのエンコード方式を使用する必要があるかを決定します。有効な値は、BIT7 (または 7bit)、QP または BASE64 です。
この関数は、ユーザーが独自の BASE64 関数または QP 関数を使用するかどうかもチェックします。この記事の執筆時点では、クラスには BIT7 と BASE64 のみが実装されていますが、その後、エンコード プロセス中に $qp_func クラス変数
を介して使用する独自の quote-printable 関数を渡すことができます。 chunk_split() は、エンコードされたメッセージに使用されます。この関数は、オプションの長さに応じて文字列をより小さな部分に分割します。デフォルトの長さは、電子メールの処理に非常に適しています。 、$contenttype パラメータに text/plain が含まれる場合、「charset=」パラメータの値を指定する必要があります。そのデフォルト値は、定数 CHARSET 内で値 us-ascii で定義されています
。ヘッダーがパラメーター値によって渡される場合、ヘッダーとパラメーターの間にセミコロン (;) が必要であることに注意してください。
例: Content-Type: text/plain; charset=us-ascii
他の MIME セクション ヘッダーのそれぞれの値がこのメソッドに渡されると、これらのセクション ヘッダーが作成されます。結局のところ、説明のない Content-Description ヘッダーは望ましくありません。これらのヘッダーを作成した後、情報のエンコードされたデータ部分を追加します。 (メソッド
の sprintf() ステートメントを確認してください)。
もう一度、BODY という特別な説明フィールド (これも定数) を使用していることに注意してください。これはクラスの実装で使用するものです。
説明フィールドが BODY と同じ場合、それを $mimeheaders 配列の最初の要素に割り当てます。これを何度か読んでください。

attach() は、呼び出し元のスクリプトへの参照で使用される $mimeparts 配列の現在のサイズを返します。このようにして、添付ファイル「X」がどのインデックスに存在するかを知ることができます (実際の戻り値は配列内のインデックスより 1 小さい値です)
すべてのヘッダーは CRLF を使用する必要があることに注意してください ( ) シーケンスが終了します。
次に、fattach() メソッドを見てみましょう。 fattach() はattach() と似ていますが、最初のパラメータとしてファイル名を使用します (attach() の $data の代わりに)。このメソッドは、呼び出し元がファイルを使用して fattach を呼び出すことができるようにするための単なるラッパーです。次に、fattach() はファイルを読み取り、attach() を呼び出してデータを追加します。このメソッドは、失敗した場合は 0 (その説明は $errstr 変数にあります) を返し、成功した場合は $mimeparts 配列内の添付ファイルのインデックス番号を返します。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/509092.html技術記事コア: メソッド MIME ヘッダーの生成、MIME セグメント ヘッダーの生成、および最終的な電子メール メッセージの生成をいくつかのモジュールに分割します。このメソッドの実装は、以前に説明した MIME の基本から直接派生しています...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。