メールを送信する

広告

Mailクラスのオブジェクトを作成後にメールの送信を行います。メールの送信を行うにはMailクラスで用意されている「send」メソッドを使います。

引数:
  $recipients  配列かカンマで区切った受取アドレスの文字列
  $headers  ヘッダの連想配列。ヘッダ名が配列のキー、ヘッダの値が配列の値
  $body  メール本文
戻り値:
  TRUE か、または失敗した場合は PEAR_Error オブジェクト

1番目の引数に実際に送信するメールアドレスを記述します。複数ある場合には配列かまたはカンマ(,)で区切ってメールアドレスを指定します。(後でメールのヘッダーの設定を行いますが、ヘッダーに書かれた「To」や「Cc」で指定したメールアドレスではなく「recipients」に指定したメールアドレスにメールが送信されることに注意して下さい)。

2番目の引数には送信するメールのヘッダーを連想配列の形で記述します。メールのヘッダーには色々な値を記述できますが一般的には次のようなヘッダーを設定します。

ヘッダー説明
Toメールの送信先
Ccメールの送信先(カーボンコピー)
Bccメールの送信先(ブラインドコピー)
Fromメールの差出人
Subjectメールの件名

他にも多くのメールのヘッダーが使われています。

3番目の引数にはメールの本文を表す文字列を指定します。

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

$params = array(
  "host" => "xxx.xxx.xxx.xxxx",
  "port" => 25,
  "auth" => false
);

$mailObject = Mail::factory("smtp", $params);

$recipients = "xxx@xxx.xxx, xxx@xxx,xxx";
$headers = array(
  "To" => "xxx@xxx.xxxx",
  "From" => "xxx@xxxx.xxxx",
  "Subject" => "Test Mail"
);
$body = "This is test mail";

$mailObject -> send($recipients, $headers, $body);

日本語を扱う場合には別の処理が必要となります。詳しくは次のページで確認します。

サンプルプログラム

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

sample4-1.php

<?php
require_once("Mail.php");

$params = array(
  "host" => "xxx.xxx.xx",
  "port" => 587,
  "auth" => true,
  "username" => "xxx@xxx.xxx.xx",
  "password" => "xxxxxxxxxx"
);

$mailObject = Mail::factory("smtp", $params);

$recipients = "xxx@xxx.xxx.xx";
$headers = array(
  "To" => "xxx@xxx.xxx.xx",
  "From" => "xxx@xxx.xxx.xx",
  "Subject" => "Test Mail"
);
$body = "This is test mail";

$mailObject -> send($recipients, $headers, $body);

?>

※SMTPサーバやメール送信先などは書き換えて使用して下さい。ポート番号も「Outbound Port25 Blocking」などの関係で25番ポートではなく587番ポートなどが使われていますがこちらも環境に合わせて変更して下さい。

メール送信用PHPを呼び出すためのHTMLファイルを用意しました。

mail4-1.html

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

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

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

</body>
</html>

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

メールの送信

「メール送信」と書かれたリンクをクリックするとメールが送信されます。無事メールが送信されたかどうか確認して下さい。

( Written by Tatsuo Ikura )