ラボ > FuelPHP:独自クラス:classes/utilのサンプル

FuelPHPでメール送信させる独自クラスのベース

作成日:2018-03-05, 更新日:2018-03-05

サンプルソース

基本、たたき台なので、必要に応じて修正する。

<?php
class Util_Email {
  /** メール送信
    *  ▼$prmAry["cc"]、$prmAry["bcc"]
    *  $prmAry["cc"] = 'xxx@example.com';                   // 名前なし・一人だけ
    *  $prmAry["cc"] = array('xxx@example.com'=>'○○○');  // 名前あり
    *  $prmAry["cc"] = array('xxx@example.com',             // 複数人(名前なし)
    *                        'xxx@example.com' );
    *  $prmAry["cc"] = array('xxx@example.com'=>'○○○',   // 複数人(名前あり)
    *                        'xxx@example.com'=>'○○○' );
    *
    *  ▼添付ファイル1つだけ
    *  $prmAry["attach"] = DOCROOT . "assets/img/xxx.png"
    *
    *  ▼添付ファイル複数
    *  $prmAry["attach"]= array( DOCROOT . "assets/img/xxx.png",
    *                            DOCROOT . "assets/css/xxx.css"
    *                     );
   **/
  public static function mailSend($toMail, $title='', $body='', $prmAry=array()) {
    // 提供元(from):名称、メアド
    $offerName = '株式会社〇〇〇';
    $offerMail = '〇〇〇@example.com';
    
    $result = array(
       "status"  => false,
       "message" => ""
    );
    
    $tmpFromMail = $offerMail;
    $tmpFromName = $offerName;
    if (isset($prmAry["fromMail"])) {
      $tmpFromMail = $prmAry["fromMail"];
      
      if ( isset($prmAry["fromName"]) ) {
        $tmpFromName = $prmAry["fromName"];
      }
      else {
        $tmpFromName = "";
      }
    }
    
    //インスタンスの作成
    $email = \Email::forge('jis');
    
    //メール情報の設定
    $email->from($tmpFromMail, $tmpFromName);
    $email->to($toMail);
    
    // cc
    if ( isset($prmAry["cc"]) ) {
      $email->cc($prmAry["cc"]);
    }
    
    // bcc
    if ( isset($prmAry["bcc"]) ) {
      $email->bcc($prmAry["bcc"]);
    }
    
    $email->subject($title);
    $email->body(mb_convert_encoding($body, 'jis'));
    
    // 添付ファイル
    if ( isset($prmAry["attach"]) ) {
      // 複数ファイルを添付するなら配列
      if ( is_array($prmAry["attach"]) ) {
        foreach ($prmAry["attach"] as $rowAttach) {
          $email->attach($rowAttach);
        }
      }
      else {
        $email->attach($prmAry["attach"]);
      }
    }
    
    try {
      //メール送信
      $email->send();
      $result["status"] = true;
    }
    catch (\EmailValidationFailedException $e) {
      $result["message"] = 'address error(EmailValidationFailedException)<br />'
                         . $e->getMessage();
    }
    catch (\EmailSendingFailedException $e) {
      $result["message"] = 'send error(EmailSendingFailedException)<br />'
                         . $e->getMessage();
    }
    catch(Exception $e) {
      //その他のエラー
      $result["message"] = 'error(Exception)<br />'
                         . $e->getMessage();
    }
    
    return $result;
  }
}

・「$offerName」「$offerMail」は直書きするか、constして置き換えるか、それとも別のトコから取得してくるか、好きにする。