Re:Vue

Mail クラス

Mail クラスは、PHP の mb_send_mail を利用してメール送信を行うユーティリティクラスである。
送信先、件名、本文、送信元のヘッダーを指定してメールを送信できる。

1. コード

<?php

namespace app\aura\utils;

class Mail{
    /**
     * sendMail
     * @param array $post_data 
     * @return boolean $result
     */
    function sendMail($post_data){
        $result =  false;
        
        mb_language("Japanese");
        mb_internal_encoding("UTF-8");

        $to      = $post_data['mail'];
        if (!filter_var($to, FILTER_VALIDATE_EMAIL)) {
          echo "Invalid email address.";
          return;
        }
        $title   = 'Letter from '.$post_data['username'];
        $message = $post_data['comment'];
        $headers =  'From:'. $post_data['mail'];
        
        if(mb_send_mail($to, $title, $message, $headers)){
          $result = true;
          echo "Email successfully sent.";
        }else{
          echo "Email transmission failed.";
        }
        return $result;
    }
}
?>

2. コード説明

  • 名前空間
    namespace app\aura\utils;
    

    app\aura\utils 下に Mail クラスを定義
  • メソッド
    function sendMail($post_data)
    
    • $post_data : 送信データの連想配列
      • 'mail' : 送信先メールアドレス
      • 'username' : 送信者名
      • 'comment' : メール本文
    • メールアドレスが不正な場合は送信せずメッセージを出力
    • 日本語メール用に mb_languagemb_internal_encoding を設定
    • mb_send_mail で送信
    • 成功時は true、失敗時は false を返す

3. 使い方 / 利用例

■ フォームデータ例

<form method="post" action="/send">
    <input type="text" name="username" placeholder="Your name">
    <input type="email" name="mail" placeholder="Your email">
    <textarea name="comment"></textarea>
    <button type="submit">Send</button>
</form>

■ サービスクラス内での使用例

use app\aura\utils\Mail;

$mailUtil = new Mail();

$post_data = [
    'username' => $_POST['username'],
    'mail'     => $_POST['mail'],
    'comment'  => $_POST['comment']
];

if ($mailUtil->sendMail($post_data)) {
    echo 'メール送信成功';
} else {
    echo 'メール送信失敗';
}
  • ポイント
    • $post_data 配列に必要なキーを必ず含めること
    • メールアドレスは filter_var によって検証される
    • 日本語を含む場合は mb_languagemb_internal_encoding の設定を維持