ASCIIメールの送信(mail関数)

広告

それではまずASCIIメールの送信を行ってみます。ASCIIメールと言うのは日本語などが入っていないメールだと考えて下さい。メールの送信を行うには「mail」関数を使用します。

mail
bool mail ( string to, 
            string subject, 
            string message 
         [, string additional_headers 
         [, string additional_parameters]] )
メールを送信します。

パラメータ:
  to  メールの宛先
  subject  メールのタイトル
  message  メールの本文
  additional_headers  追加ヘッダ
  additional_parameters  追加パラメータ
返り値:
  メール送信が受け入れられた場合に TRUE 、それ以外の場合に FALSE

メールの宛先、タイトル、本文を指定してメールを送信します。

メールの宛先はメールのアドレスを記述します。メールアドレスの記述方法は次のような書式があります。

user@example.com
user@example.com, anotheruser@example.com
User <user@example.com>
User <user@example.com>, Another User <anotheruser@example.com>

ただしWindowsで使用する場合は「User <user@example.com>」の形式は使用できません。

メールのタイトルに指定する文字列は改行できません。

メールの本文は複数行の文字列を指定できます。改行する場合はLF「\n」を使用します。なお各行の長さは 70 文字を超えてはいけないことになっている為、「wordwrap」関数を用いて70文字以上含まれる行は改行します。

$message = wordwrap($message, 70, "\n");

追加ヘッダは「From」や「Cc」「Reply-To」などヘッダとして記述したい内容を指定します。複数のヘッダを追加する場合は CRLF「\r\n」で区切ります。ヘッダの中で「From」ヘッダだけは必須となっています。引数の「additional_headers」は省略可能ですが「php.ini」ファイルで「sendmail_from」を設定していない場合には「From」ヘッダの記述が必要です。

追加オプションはsendmailなどへパラメータを渡す場合に使用します。Windows環境の場合は使用しません。

例えば次のような記述となります。

$to = 'you@example.jp';
$subject = 'test mail';
$message = "This is Test mail\nMulti Line";
$message = wordwrap($message, 70, "\n");
$headers = 'From: my@example.jp';

mail($to, $subject, $message, $headers);
サンプルコード

では簡単なサンプルプログラムを作成して試してみます。

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

<h1>メール送信</h1>

<?php
$to = 'you@example.jp';
$subject = 'test mail';
$message = "This is Test mail\nMulti Line";
$message = wordwrap($message, 70, "\n");
$headers = 'From: my@example.jp'."\r\n".
           'To: you@example.jp'."\r\n".
           'X-Mailer: PHP/Mail';

if (mail($to, $subject, $message, $headers)){
  print('成功');
}else{
  print('エラー');
}
?>

</body>
</html>

上記を「index1-1.php」の名前で「(Apacheドキュメントルート)\php\mail」に保存します。

そしてブラウザから「http://localhost/php/mail/index1-1.php」へアクセスして下さい。

ASCIIメールの送信(mail関数)

SMTPサーバにメールの配送を受け入れられた場合には「成功」と表示されます(メール送信が成功するかどうかは別の話しとなります)。上記のサンプルは送信先などが適当なメールアドレスですが実際のメールアドレスに変更して試した結果無事メールは送信できました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。