« とある切符の馬鹿旅行S/MIMEによるメール暗号化 »

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

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
おすすめ平均
type="text/javascript" src="http://www.ad16.jp/socailmedia.php?a=CCBot%2F2.0+%28http%3A%2F%2Fcommoncrawl.org%2Ffaq%2F%29&u=http%3A%2F%2Fkuroutoshikou.blog16.jp%2Findex.php%2F2010%2F06%2F05%2Fs_mime_a_a_ma_a_ia_fa_le_aiia_sa_sa_a_fa" charset="EUC-JP">

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

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

2017年3月
 << <   > >>
      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