本文をファイルから取得する

広告

本文に設定する文字列を直接指定する代わりに本文を記述したファイルを別途用意し、本文をファイルとして指定することができます。「setTxtBody」メソッドをもう一度見て下さい。

引数:
  $data  本文を表す文字列。又は本文を表すファイル名
  $isfile  1番目の引数がファイル名の場合にはtrueを指定
戻り値:
  成功時には TRUE、失敗時にはPEAR_Error

本文をファイル名で指定する場合は1番目の引数にファイル名を指定し、2番目の引数に「true」を設定します。ファイル名は実行されるPHPファイルが置かれているディレクトリからの相対パスで指定します。

例えば次のように記述します。

$mimeObject = new Mail_Mime("¥n");
$mimeObject -> setTxtBody("./file/mail.txt", "true");

サンプルプログラム

では簡単なサンプルで実際に試してみます。

sample10-1.php

<?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";

$mimeObject = new Mail_Mime("¥n");
$mimeObject -> setTxtBody("./file/mail.txt", "true");

$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ファイルを用意しました。

mail10-1.html

<html>
<head><title>PHP TEST</title></head>
<body>

<p>メール送信テスト</p>

<p>
<a href="./sample10-1.php">メール送信</a>
</p>

</body>
</html>

また本文用のファイルとして次のファイルを用意しました。このファイルは「pearmailtest4.php」ファイルが置かれているディレクトリの中に「file」と言うディレクトリを作成してその中に置いてあります。

mail.txt

2007年6月。
日本語メールのテストです。
ファイルに本文を記述し、ファイルを読み込んで本文を
作成しています。

ではメール送信用HTMLファイルをWWWサーバに設置しブラウザで見てみると下記のように表示されます。

本文をファイルから読み込む

「メール送信」と書かれたリンクをクリックするとメールが送信されます。実際に届いたメールは次のようになります。

本文をファイルから読み込む

( Written by Tatsuo Ikura )