作成日:2018-03-28, 更新日:2018-03-28
基本
・「fuel\app\config\config.php」の「always_load」の「packages」に「email」を追加。
・「fuel\packages\email\config」の「email.php」を「fuel\app\config」に複製
・「fuel\app\config\email.php」を修正
「fuel\app\config\config.php」
'always_load' => array(
~ 略 ~
'packages' => array(
//'orm',
'email',
),
~ 略 ~
※「always_load」のトコがコメントされているときは解除する必要あり。「'always_load' => array(」に対応する「);」のトコも。
「fuel\app\config\email.php」を修正
・driverを修正。「mail, smtp, sendmail, noop」のどれか。
※基本、修正は不要。
送信テストと使い回し用の独自関数
$toMail = 'tomail@example.com';
$title = 'テストメール';
$body = 'テストの本文';
$pramAry = array();
$resultMail = \Util_Email::mailSend($toMail, $title, $body, $pramAry);
if ( !$resultMail['status'] ) {
// 送信失敗
echo $resultMail['message'];
}
▼「/fuel/app/classes/util/email.php」
<?php
class Util_Email {
const FROM_MAIL = 'hoge@example.com'; // 送信元のメアド
const FROM_NAME = '丸ごとシマウマ'; // 送信元のメアドの名前
/** メール送信
* ▼$pramAry['cc']、$pramAry['bcc']
* $pramAry['cc'] = 'xxx@xxx.com'; // 名前なし・一人だけ
* $pramAry['cc'] = array('xxx@xxx.com'=>'○○○'); // 名前あり
* $pramAry['cc'] = array('xxx@xxx.com', 'xxx@xxx.com'); // 複数人
* $pramAry['cc'] = array('xxx@xxx.com'=>'○○○',
* 'xxx@xxx.com'=>'○○○'); // 複数人(名前あり)
*
* ▼添付ファイル1つだけ
* $pramAry['attach'] = DOCROOT . "assets/img/xxx.png"
*
* ▼添付ファイル複数
* $pramAry['attach']= array( DOCROOT . "assets/img/xxx.png",
* DOCROOT . "assets/css/xxx.css"
* );
**/
public static function mailSend($toMail, $title, $body, $pramAry=array()) {
$result = array(
'status' => false,
'message' => ''
);
//インスタンスの作成
$email = \Email::forge('jis');
$tmpFromMail = self::FROM_MAIL;
$tmpFromName = self::FROM_NAME;
if (isset($pramAry['fromMail'])) {
$tmpFromMail = $pramAry['fromMail'];
if ((isset($pramAry['fromName']))) {
//$tmpFromName = mb_encode_mimeheader( $pramAry['fromName'], 'jis' );
$tmpFromName = $pramAry['fromName'];
}
else {
$tmpFromName = '';
}
}
//メール情報の設定
$email->from($tmpFromMail, $tmpFromName);
$email->to($toMail);
// cc
if ( isset($pramAry['cc']) ) {
$email->cc($pramAry['cc']);
}
// bcc
if ( isset($pramAry['bcc']) ) {
$email->bcc($pramAry['bcc']);
}
//$email->subject(mb_encode_mimeheader($title, 'jis'));
//$email->body(mb_convert_encoding($body, 'jis'));
$email->subject($title);
$email->body($body);
// 添付ファイル
if ( isset($pramAry['attach']) ) {
// 複数ファイルを添付するなら配列
if ( is_array($pramAry['attach']) ) {
foreach ($pramAry['attach'] as $rowAttach) {
$email->attach($rowAttach);
}
}
else {
$email->attach($pramAry['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;
}
}