Pocket
LINEで送る

参考:
Email パッケージの使用方法
Fuelphp:Fuelphpで基本的なメール送信処理

コントローラーで下記を読み込むらしい。

\Package::load('email');

下記みたいな感じでとりあえずできた。日本語文字化け対策で、上記参考サイトの、■ Emailクラスの設定ファイルというところの対策をやった方がいいらしい。

public function get_index()
{
	$this->template = View::forge('public/template');

	$data = array();
	$this->template->title = 'お問い合わせ';
	$this->template->content = View::forge('public/contact/index', $data);
}

public function post_index(){
	$this->template = View::forge('public/template');
	$this->template->title = 'お問い合わせ';

	$data = Input::post();
	if(!$data || empty($data['name']) || empty($data['mail']) || empty($data['content'])){
		$data = array('error_msg' => '全項目を入力してください。');
		$this->template->content = View::forge('public/contact/index', $data);
		return;
	}

	$result = $this->send_mail($data);
	switch($result){
		case 1:
			$data = array('mail_success' => true);
			break;
		case 2:
			$data = array('error_msg' => '正しいメールアドレスを入力してください');
			break;
		case 3:
			$data = array('error_msg' => 'メールが送信できませんでした。恐れ入りますが、再度お試しください。');
			break;
	}

	$this->template->content = View::forge('public/contact/index', $data);
}

/**
 * メール送信関数(通常のお問合せ)
 */
private function send_mail($data){
	$admin_email = $this->make_mail($data, true);
	$user_email = $this->make_mail($data, false);

	try
	{
		$user_email->send();
		$admin_email->send();
		return 1;
	}
	catch(\EmailValidationFailedException $e)
	{
		// バリデーションが失敗したとき
		return 2;
	}
	catch(\EmailSendingFailedException $e)
	{
		// ドライバがメールを送信できなかったとき
		return 3;
	}
}

/**
 * メール作成関数
 */
private function make_mail($data, $admin = false){
	$admin_mail = __('site_info.admin_mail');
	$subject = __('site_info.contact_mail_subject');

	$email = \Email::forge('jis');
	$email->from($admin_mail);

	if($admin){
		$email->subject('[管理]' . $subject);
		$email->to(array(
			$admin_mail,
		));
	}else{
		$email->subject($subject);
		$email->to(array(
			$data['mail'],
		));
	}

	$body = \View::forge('public/email/contact', $data);
	$email->body(mb_convert_encoding($body, 'jis'));
	return $email;
}
Pocket
LINEで送る

カテゴリー: プログラミング

コメントください

関連記事

プログラミング

Go言語によるビットコインのフルノード実装btcdを調べる(2)

btcdを実行した際のプログラムの流れを最初から確認してみます。 se 続きを読む …

プログラミング

Go – leveldb

Goで使えるLevelDB。 syndtr/goleveldb ドキュ 続きを読む …

%d人のブロガーが「いいね」をつけました。