カテゴリ: CakePHP

ページ: 1 2 3 4 5 6 7 8 >>

S/MIME 暗号化メール送信コンポーネント for CakePHP

パーマリンク 2010/06/05 23:00:00 著者: kumaold メール
カテゴリ: プログラミング, PHP, CakePHP

前回、S/MIME 暗号化メール送信の概要と下準備について書きました。
このメールをPHPから送信してみるのが今回の目的です。

ところが・・・いくら探しても公式の openssl_pkcs7_encrypt() サンプルソースを使ったページしか見つかりません。
そんなに新しい技術でもないのに、実際にやってみる人が少ないのでしょうか。


仕方ないのでドキュメントを読み進めながらクラスを自作することにしましたよ。

特に添付ファイルを取り扱ったS/MIME暗号化メールは参考資料がまったくなく、どうしようもないので実際のメールのソースと比較しながら書きました。


10時間ほど頑張った結果、それなりのものができたのでひとつ公開します。
CakePHP のコンポーネントですが、手を加えれば他にも流用できると思います。

DL: EncryptMailComponent (ZIP/1.45KB)


まず、解凍したファイルを cakephp/app/controllers/components/ に設置。
利用するコントローラ内のコンポーネントに以下を追加。

var $components = array ('EncryptMail');

コントローラ内では必要に応じてこのように記述します。
添付ファイルも複数送信が可能です。

// 本文(テキスト)を記述
$body = 'テストメール' . "\n";
$body .= 'こちらが本文' . "\n";

// 添付ファイルを (ファイル名 => データ) の配列で指定
$attach = array(
    '日本語ファイル名.txt' => 'テスト添付データ',
);

// 追加のメールヘッダ
$add_headers = array(
    'From' => 'from@example.com');
);

// 公開鍵証明書のパス
$this->EncryptMail->key_path = TMP . 'mail/key.pem';
// 平文メッセージの仮保存パス (パーミッション606)
$this->EncryptMail->msg_path = TMP . 'mail/msg.txt';
// 暗号メッセージの仮保存パス (パーミッション606)
$this->EncryptMail->enc_path = TMP . 'mail/enc.txt';
$this->EncryptMail->body = $body;
$this->EncryptMail->attach = $attach;  // 省略可
$this->EncryptMail->to = 'to@example.com';
$this->EncryptMail->subject = 'S/MIME 送信テスト';
$this->EncryptMail->add_headers = $add_headers;  // 省略可
// メール送信成功時 true
if ($this->EncryptMail->send()) {
    echo "送信成功\n";
} else {
    echo "送信失敗\n";
}

最初は公開するつもりがなかったので一部適当な作りのところがありますが、どうぞご自由に改良などしていただいて結構です。
 

今夜わかるメールプロトコル (Network)今夜わかるメールプロトコル (Network)

翔泳社 2005-06-17
売り上げランキング : 49886
おすすめ平均

AuthComponent のパスワードハッシュ化メモ

パーマリンク 2010/01/19 15:20:40 著者: kumaold メール
カテゴリ: 仕事, プログラミング, PHP, CakePHP

CakePHP の AuthComponent でパスワードのハッシュ化をしたいときに、稼働中のシステムに手を加えるのも嫌なので、それ用のコントローラを作ってみた。

別にフォームを作るほどじゃないので。

以下、個人的メモ書き程度ですが、どうぞ勝手にお使いください。

<?php
/**
 * AuthComponent ハッシュ化パスワード表示ツール
 *
 * /password/hash/[パスワード]/
 */
class PasswordController extends AppController
{
    var $uses = null;
    var $components = array('Auth');
    
    function beforeFilter()
    {
        parent::beforeFilter();
        // ログイン処理をパス
        $this->Auth->allow('hash');
    }
    
    function hash($password = null)
    {
        echo $this->Auth->password($password);
        exit;
    }
}

 

CakePHP1.2ガイドブックCakePHP1.2ガイドブック
毎日コミュニケーションズ 2009-06-27
売り上げランキング : 201865
おすすめ平均
type="text/javascript">
type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

DB なし Model で FormHelper を使う方法

パーマリンク 2009/11/06 11:38:35 著者: kumaold メール
カテゴリ: プログラミング, PHP, CakePHP

CakePHPはDBを使用する環境で使うのがほとんどですが、そうでない場合もあります。そんなときは Model でこんな風にすればいいのはご存知かと思います。

class Example extends AppModel {
    var $useTable = false; // DBを使用しない
}

ところが、これを設定した場合でも View で FormHelper を使おうとすると、どういうわけか DB に接続しにいってしまいます。

たとえば、DB を使用しないメールフォームを作ろうとした場合などなど。
かといって便利なバリデーション機能を使わないのはもったいないです。

そこで、こんなコードを Model に設定すればいいようです。

var $_schema = array('id' => array('type' => 'integer'));

これでとりあえず FormHelper でのエラーは出なくなりました。
・・・が、今度はバリデーションのところでまた DB に接続しようとするエラー。

仕方ないので、 database.php にダミーの DB を設定したら何も出なくなりました。
根本的な解決策があったら教えてください。

参考記事
  formヘルパーをテーブルなしモデルで使用するとエラーの回避方法

type="text/javascript">
type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

1 2 3 4 5 6 7 8 >>

一六社で働くITエンジニアのブログ。

普段はWeb系システム開発と地元のPCサポートをやってます。いつの間にやら会社に8年目。
技術ネタ中心に日々の仕事と生活と趣味やらを気が向いたら書いてます。

2017年5月
 << <   > >>
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

検索

XMLフィード

16ブログ     powered by b2evolution free blog software