- Home ›
- PEAR入門 ›
- メール送信(PEAR::Mail) ›
- HERE
メールにファイルを添付する
メールにファイルを添付する方法を確認します。Mail_Mimeクラスで用意されている「addAttachment」メソッドを使います。
Mail_Mime::addAttachment() boolean addAttachment (string $file, string [$c_type = 'application/octet-stream'], string [$name = ''], boolean [$isfile = TRUE], string [$encoding = 'base64'])
引数: $file ファイル名かデータ自身 $c_type ファイルの内容の種類 $name $fileがデータの場合のファイル名 $isfile $file がファイル名かどうか $encoding ファイルのデータを転送するための符号化の種類。デフォルト は「base64」 戻り値: 成功時には TRUE、失敗時にはPEAR_Error
1番目の引数にファイル名を指定します。ファイル名は記述してあるPHPファイル名からの相対パスで指定します。2番目の引数にはファイルの種類をMIMEタイプで指定します。例えば「image/png」や「image/jpeg」です。3番目と4番目の引数はファイルで指定する場合には省略して構いません。
例えば次のように記述します。
$body = "添付ファイルのテストです。"; $body = mb_convert_encoding($body, "ISO-2022-JP", "auto"); $mimeObject = new Mail_Mime("¥n"); $mimeObject -> setTxtBody($body); $mimeObject -> addAttachment("./star.png", "image/png");
サンプルプログラム
では簡単なサンプルで実際に試してみます。
<?php require_once("Mail.php"); require_once("Mail/mime.php"); $params = array( "host" => "xxx.xxx.xx", "port" => 587, "auth" => true, "username" => "xxx@xxx.xxx.xx", "password" => "xxxxx" ); $mailObject = Mail::factory("smtp", $params); $recipients = "xxx@xxx.xxx.xx"; $body = "添付ファイルのテストです。"; $body = mb_convert_encoding($body, "ISO-2022-JP", "auto"); $mimeObject = new Mail_Mime("¥n"); $mimeObject -> setTxtBody($body); $mimeObject -> addAttachment("./star.png", "image/png"); $bodyParam = array( "head_charset" => "ISO-2022-JP", "text_charset" => "ISO-2022-JP" ); $body = $mimeObject -> get($bodyParam); $addHeaders = array( "To" => "xxx@xxx.xxx.xx", "From" => "xxx@xxx.xxx.xx", "Subject" => mb_encode_mimeheader("テストメール") ); $headers = $mimeObject -> headers($addHeaders); $mailObject -> send($recipients, $headers, $body); ?>
※SMTPサーバやメール送信先などは書き換えて使用して下さい。ポート番号も「Outbound Port25 Blocking」などの関係で25番ポートではなく587番ポートなどが使われていますがこちらも環境に合わせて変更して下さい。
メール送信用PHPを呼び出すためのHTMLファイルを用意しました。
<html> <head><title>PHP TEST</title></head> <body> <p>メール送信テスト</p> <p> <a href="./sample13-1.php">メール送信</a> </p> </body> </html>
ではメール送信用HTMLファイルをWWWサーバに設置しブラウザで見てみると下記のように表示されます。
「メール送信」と書かれたリンクをクリックするとメールが送信されます。実際に届いたメールは次のようになります。
( Written by Tatsuo Ikura )