メールの送信

提供: とある社畜の頭脳整理
移動先: 案内検索

PHPでメールを送信してみるよ。
メール送信の方法はいくつかあるみたいだから、それぞれ紹介してみるよ。
僕が使っている環境はさくらサーバーのスタンダードプランだからそれ前提で話を進めるよ。
あと…メール受信をトリガーに呼び出す用だから、Paerを読み込むときはフルパスを切ってるよ。
(メール受信をトリガーにPHPを起動するとカレントディレクトリがmailfilterがおいてあるディレクトリになるそうだよ…)

サンプルはエラーハンドリングしていないけど、実際に組むときはちゃんとハンドリングしてね。

mb_send_mail()

「mb_send_mail()」を使ってメールを送信するサンプルプログラムだよ。

#!/usr/local/bin/php
<?php
    //カレントの言語を日本語にする
    mb_language("ja");

    //内部文字エンコードを設定する
    mb_internal_encoding("UTF-8");

    //設定
    $mailTo = "【送信先アドレス】";
    $subject = "表題";
    $body = "本文";
    $header = "From: 【送信元アドレス】";
    
    //文字コード変換
    $subject = mb_convert_encoding($subject,"ISO-2022-JP-MS","UTF-8");
    $body = mb_convert_encoding($body,"ISO-2022-JP-MS","UTF-8");

    //メール送信
    mb_send_mail($mailTo, $subject, $body, $header);
?>

mail()

「mail()」を使ってメールを送信するサンプルプログラムだよ。

#!/usr/local/bin/php
<?php
    //カレントの言語を日本語にする
    mb_language("ja");
 
    //内部文字エンコードを設定する
    mb_internal_encoding("UTF-8");
 
    //設定
    $mailTo = "【送信先アドレス】";
    $subject = "表題";
    $body = "本文";
    $header = "From: 【送信元アドレス】";
 
    //文字コード変換
    $subject = mb_encode_mimeheader($subject,"ISO-2022-JP-MS");
    $body = mb_convert_encoding($body,"ISO-2022-JP-MS","UTF-8");
 
    //メール送信
    mail($mailTo, $subject, $body, $header);
?>

Mail::send() mail編

「Mail::send()」を使って、内部的にMail関数を使ってメールを送信するサンプルプログラムだよ。

#!/usr/local/bin/php
<?php
    require_once '/home/【ドメイン名】/pear/share/pear/Mail.php';

    //言語設定、内部エンコーディングを指定する
    mb_language("japanese");
    mb_internal_encoding("UTF-8");

    //設定
    $mailTo = "【送信先アドレス】";
    $subject = "表題";
    $body = "本文";
    
    //コード変換
    $subject = mb_convert_encoding($subject,"ISO-2022-JP-MS","UTF-8");
    $body = mb_convert_encoding($body,"ISO-2022-JP-MS","UTF-8");

    //ヘッダー設定
    $headers = array(
        "From" => '【送信元アドレス】',
        "To" => $mailTo,
        "Subject" => mb_encode_mimeheader($subject)
    );
    
    $mail =& Mail::factory('mail');
    $mail->send($mailTo, $headers, $body);
?>

Mail::send() smtp編

「Mail::send()」を使って、内部的にsmtpを使ってメールを送信するサンプルプログラムだよ。

#!/usr/local/bin/php
<?php
    require_once '/home/【ドメイン名】/pear/share/pear/Mail.php';

    //言語設定、内部エンコーディングを指定する
    mb_language("japanese");
    mb_internal_encoding("UTF-8");

    //設定
    $mailTo = "【送信先アドレス】";
    $subject = "表題";
    $body = "本文";
    
    //コード変換
    $subject = mb_convert_encoding($subject,"ISO-2022-JP-MS","UTF-8");
    $body = mb_convert_encoding($body,"ISO-2022-JP-MS","UTF-8");

    //ヘッダー設定
    $headers = array(
        "From" => '【送信元アドレス】',
        "To" => $mailTo,
        "Subject" => mb_encode_mimeheader($subject)
    );

    //SMTPの設定
    $params = array(
        "host" => "【SMTPホスト名】",
        "port" => 【送信ポート番号】,
        "auth" => 【smtp認証の要/不要】,
        "username" => "【smtpのユーザID】",
        "password" => "【smtpのパスワード】"
    );

    $mail =& Mail::factory('smtp', $params);
    $mail->send($mailTo, $headers, $body);
?>