ホーム » パソコン » メールで添付ファイルを送るには?

メールで添付ファイルを送るには?


--- 広告 ---
--- 広告 ---

http://kattsuk2.blog111.fc2.com/blog-entry-43.htmlからそっくりコピーさせていただきました。m(__)m

マルチパートメールにすれば送れます。

マルチパートとは、1通の電子メールに複数の異なる種類のデータを格納するためのMIMEの拡張仕様です。マルチパートメールを送信するサンプルです。


■MIME

MIMEでは1つのメッセージボディの中に複数のエンティティを入れることができます。そのためには、メッセージヘッダでContent-Type:を「multipart/mixed」として、マルチパートの区切り記号であるboundaryを定義します。
■boundary

エンティティ(本文、添付ファイル)の区切りはboundaryで定義した文字列の前に「--」(ハイフン2つ)をつけます。そして最後のエンティティの後にはboundary文字列の前と後に「--」をつけます。
boundaryで定義する文字列は何でも構いません。メールの中に現れないような文字列を選びます。
■エンティティ(本文、添付ファイル)

それぞれのエンティティの内容は、エンティティヘッダとエンティティボディという形式にします。エンティティヘッダは複数のヘッダフィールドを入れることができ、それぞれフィールドの終わりに改行を入れます。さらに最後のヘッダとボディの間にはもう1つ改行を入れます。これがボディの最初を認識する重要な記号となります。
■Content-Type

メッセージヘッダと同様に、それぞれのエンティティヘッダにもContent-Type:フィールドが必要です。Content-Type:は text/plain、text/htmlなど適切なタイプを入れます。圧縮ファイルの場合は、application/octet-streamとします。
■添付ファイルの圧縮

PHPではbase64方式によるエンコードを行うbase64_encode()という関数があります。また、この出力をchuck_split()を使ってRFC2045という規約に基づいた出力に変換します。
添付ファイルをbase64で圧縮した場合、エンティティヘッダには「Content-Transfer-Encoding: base64」を入れます。
■Content-Disposition:

Content-Dispositon:フィールドではコンテンツの表示方法を指定します。「inline」を指定すると自動的に表示、「attachment」だとユーザーの判断により表示または保存できます。また「filename=」として保存するファイル名を指定します。
■MIME-Version1.0

添付が可能なマルチパート形式であることを示します。

参考URL
http://sunq.jp/redmine/public/repositories/entry/mj-100/%E3%83%AC%E3%83%83%E3%83%84PHP+zut.jp%28Shift_JIS%29/pop.php?rev=6
http://shoji.wiki.fc2.com/wiki/PHP%2F%E3%83%A1%E3%83%BC%E3%83%AB%E5%8F%97%E4%BF%A1%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88
マルチパートなメールを解析する PEAR::Mail::mimeDecode をラップするクラス

--- 広告 ---
--- 広告 ---

 

この記事に関連する記事一覧

目 次
最近の投稿
--- 広告 ---
--- 広告 ---
お問い合わせ