‘Roundcube’ カテゴリーのアーカイブ

RoundCubeのmanagesieveをちょっと使ってみる

こちらの記事で使ったサーバに引き続き、sieveを入れます。

  • 配送にはLDAとLMTP形式があるようですが、LMTPが流行らしいのでLMTPで。
  • postfixでvirtualドメインを使ってるとこれだと動かないので、またひと手間必要です。
  • CentOSのバージョンによって微妙に違いが有るようですが、多分動くと思います。

(さらに…)

Facebooktwittergoogle_pluslinkedintumblrmail

RoundCube用にCentOSのpostfix+dovecotで簡単なテスト環境を作る

RoundCubeは設定出来たけど、メールサーバが設定出来なくてテスト出来ない。
localhost内でやり取りする程度で十分だけど・・・そんな人へ。

実験したのはCentOS6です。
DovecotもPostfixもデフォルトの設定を利用するのであれば、設定は1,2項目で済みます。

(さらに…)

Facebooktwittergoogle_pluslinkedintumblrmail

RoundCubeのlabelの一部を上書きする

RoundCubeの各項目の名称を、書き換えるような事が何度かありました。
(受信箱や送信済みの名称について、古いメーラと合わせたいとか)
そういう時は、各言語のlabels.incやmessages.incを編集する必要が有りましたが、
1.0以降は、上書きする機能を提供しているようです。

(さらに…)

Facebooktwittergoogle_pluslinkedintumblrmail

RoundCube1.0で追加されていたCanned Responses

定型文的な使い方を想定していると思われる、Canned Responsesと言う機能が1.0辺りで追加されたようです。メール作成画面の署名の隣に回答が見えると思います。

canned_response01

※言語を英語に設定しているとResponsesと表示されます。

(さらに…)

Facebooktwittergoogle_pluslinkedintumblrmail

Mac上に開発用Roundcubeをセットアップ

プラグインを作りたいので開発環境を手元に作ることにしました。

インストールについては弊社kosugiが書いた

Roundcubeをインストール&設定してみました

を参考に作業しました。あまり問題は出なかったのですが、Roundcubeのバージョンがあがり設定ファイルの名称や扱いが変わったりしていたのでメモを残したいと思います。

あとはphpのビルトインサーバー(php -S)で手軽にやりたいな〜ってのと、Gmailのセキュリティ強化の影響、個人的趣味でデータベースがPostgreSQLだというのが異なる点です。

・PHPは以前の記事でPostgreSQL用のモジュールを入れた5.5.14。
 - phpenv で入れた PHP に pdo_pgsql をインストール
 - phpenv で入れた PHP に pdo_pgsql をインストール
・PostgreSQLのバージョンは9.3.5.0 (Postgres.app)
・メールサーバーはGmail利用する。
・Roundcube 1.0.2 (Complete)

■ データベース(PostgreSQL)準備
ダウンロードして展開したRoundcubeのディレクトリにあるINSTALLファイルを参照しながら準備します。
・pgAdmin3などでroundcubeユーザーを作ります。開発環境なので権限はザックリSUPERUSERにしときました。
・roundcubemailデータベースを作ります。

CREATE DATABASE roundcubemail
  WITH OWNER = roundcube
       ENCODING = 'UTF8'
       TABLESPACE = pg_default
       LC_COLLATE = 'ja_JP.UTF-8'
       LC_CTYPE = 'ja_JP.UTF-8'
       CONNECTION LIMIT = -1;

・準備用のSQLを実行。

#展開したRoundcubeのディレクトリで
$ psql -U roundcube -f SQL/postgres.initial.sql roundcubemail

■ ビルトインサーバー起動

#展開したRoundcubeのディレクトリで
$ php -S localhost:8000                                      
PHP 5.5.14 Development Server started at Mon Sep 22 17:13:54 2014
Listening on http://localhost:8000
Document root is /Users/murave/roundcubemail-1.0.2
Press Ctrl-C to quit.

■ installerにアクセスして初期設定
今回だと http://localhost:8000/installer/ にアクセス。画面にしたがって設定していけばOKです。英語ですけど。

STEP2のCreate configで作成される設定ファイルの名称と扱いが以前とは変わっているようです。
config/config.inc.phpが直接作成されます。今回は編集する必要も特にありませんでした。一部(‘des_key)を*で伏せて引用します。


STEP3. Test configのキャプチャです。
Roundcube_Webmail_Installer

■ Gmailについて
kosugiが書いている通りIMAP経由でのメール受信を有効にしておくのは大前提ですが、RoundcubeからGmailにIMAPでアクセスしようとすると「安全性の低いアプリ」として拒否されるかもしれません(拒否されなければ気にする必要はありません)。

この場合「Google アカウント: ログイン試行をブロックしました」というメールが来ていると思います。

このメールに書いてあるのですが、以下のページから設定を変更することができます。あまり良くないのですが今回は「安全性に低いアプリのアクセス」を有効にしてIMAP接続を確認しました。

https://www.google.com/settings/security/lesssecureapps

■ ログインして動作確認
http://localhost:8000/

にアクセス、ログインしてメールの送受信を確認して完了です。

Facebooktwittergoogle_pluslinkedintumblrmail

「CEATEC JAPAN 2013」 2日目

CEATEC JAPAN 2日目です!!

本日は他のブースを色々と見て回ることができました。
面白そうなものが沢山展示されています。

中でも私の興味を引いたのがこちら、LEDスイッチ!!

LEDスイッチ

あらゆるボタンが ズラッと並んでるのがとても綺麗で、無駄にカチカチ押してきました(笑)
画像が動くボタンがあったので、テンション上がって動画を撮影したのですが
うまく撮れていませんでした…明日リベンジです。

本日のランチ、みそ焼き鯖ずし。

みそ焼き鯖ずし

衝撃の美味しさでした(´∀`)
もうこれはお取り寄せ決定です!

Facebooktwittergoogle_pluslinkedintumblrmail

「CEATEC JAPAN 2013 」1日目

やって参りました!CEATEC JAPAN 2013 in 幕張メッセ!!
今年も長崎県のブースで共同出展させて頂いております。

nagasaki_ken

通路を挟んで向かいのブースにdocomo様がデーンと構えておりますので、会場にお越しの際はそれを目印に、ぜひぜひお立ち寄り下さい(^_^)

LANCARD.COM

出展製品はこちらからご覧下さい!

昨年に引き続き、有安オートさんの電気自転車の無双っぷりが半端なかったです(^_^;)老若男女、国籍を超えて大人気!!
以前出展していたものより更にかっこ良くなっていました。

有安オート

CEATEC JAPAN 2013は10月5日(土)まで開催しております。
出店でグルメも楽しめますので、ランチついでにぜひ遊びに来て下さい!!

本日のランチ、タコライス。

タコライス

美味でした!

Facebooktwittergoogle_pluslinkedintumblrmail

Roundcubeプラグイン フックを設置する

Roundcubeでフックを設置する方法を紹介します。

今回はsample_aプラグインにフックを設置し、それをsample_bから利用する例です。
sample_aは画面をもったプラグインでボタンをクリックしたら、フックを実行し
元の画面を再度表示するようにしています。

ソースは以下のようになります。
sample_a.php

rc = rcmail::get_instance();

//ローカライズ対応
$this->add_texts('localization/');

//タスクとしてsample_aを設定
$this->register_task('sample_a');

//タスクバーにボタンを追加
$this->add_button(array(
'command'    => 'sample_a',
'label'      => 'sample_a.sample',
), 'taskbar');

//sampleタスクの場合のみ、アクションのコールバックを登録
if($this->rc->task == 'sample_a'){
$this->register_action('index', array($this, 'action'));
$this->register_action('fook_test', array($this, 'action'));
}
}

public function action(){
if($this->rc->action === 'fook_test'){
$data = $this->rc->plugins->exec_hook('sample_hook', array('data_a' => 'hoge'));
error_log(print_r($data,true));
}
$this->rc->output->send('sample_a.index');
}
}
?>

index.html




<roundcube:object name="pagetitle" />






sample_b.php

add_hook('sample_hook', array($this, 'set_data'));
}

public function set_data($args){
error_log(print_r($args,true));
$data['data_b'] = "foo";
return $data;
}
}
?>

①フックを設置するコードは以下の部分になります。

$data = $this->rc->plugins->exec_hook('sample_hook', array('data_a' => 'hoge'));

引数として配列を渡しています。

②フックを利用するコードは以下の部分になります。

function init(){
$this->add_hook('sample_hook', array($this, 'set_data'));
}

public function set_data($args){
error_log(print_r($args,true));
$data['data_b'] = "foo";
return $data;
}

このような配列が渡されてきます。
(
  [data_a] => hoge
  [abort] =>
)

渡された引数を処理して戻り値を返したりすることが出来ます。
戻り値はこのようになります。
(
  [data_b] => foo
  [data_a] => hoge
  [abort] =>
)

exec_hookの定義が以下のようになっているため、戻り値が配列の場合は自動的に
渡された配列に足して返されます。

  public function exec_hook($hook, $args = array())
  {
    if (!is_array($args))
      $args = array('arg' => $args);

    $args += array('abort' => false);
    $this->active_hook = $hook;

    foreach ((array)$this->handlers[$hook] as $callback) {
      $ret = call_user_func($callback, $args);
      if ($ret && is_array($ret))
        $args = $ret + $args;

      if ($args['abort'])
        break;
    }

    $this->active_hook = false;
    return $args;
  }
Facebooktwittergoogle_pluslinkedintumblrmail

Roundcubeプラグイン ユーザー情報の取得方法

Roundcubeでのユーザー情報の取得方法について紹介します。

①ユーザー情報
ユーザー情報の取得方法は以下のようになります。

$rc = rcmail::get_instance();
$user_data = $rc->user->data;
error_log(print_r($user_data,true));

このような情報が取得できます。

(
    [user_id] => 4
    [username] => foo
    [mail_host] => 192.168.15.117
    [alias] => 
    [created] => 2013-04-11 10:14:23
    [last_login] => 2013-05-17 07:45:24
    [language] => ja_JP
    [preferences] => a:5:{s:16:"message_sort_col";s:7:"subject";s:18:"message_sort_order";s:3:"ASC";s:8:"timezone";s:4:"auto";s:4:"skin";s:5:"larry";s:17:"message_threading";a:0:{}}
)

②識別情報
Roundcubeでは設定画面から識別情報を登録出来ます。

以下のようにして識別情報を取得出来ます。

$rc = rcmail::get_instance();
$identity = $rc->user->get_identity();
error_log(print_r($identity,true));
(
    [identity_id] => 4
    [user_id] => 4
    [changed] => 2013-05-17 12:28:06
    [del] => 0
    [standard] => 1
    [name] => テスト
    [organization] => bar
    [email] => foo@roundcube.com
    [reply-to] => hoge@roundcube.com
    [bcc] => test@roundcube.com
    [signature] => 署名
    [html_signature] => 0
)

③特定のユーザーの情報を取得する方法。

$rc = rcmail::get_instance();
$identity = $rc->user->get_identity();

上記のようにユーザー情報を取得する場合、ログインユーザーの情報を取得します。

その理由は、rcmailクラスの188行目が以下のようになっているからです。

    // create user object
    $this->set_user(new rcube_user($_SESSION['user_id']));

ということで、Roundcubeのuser_idがわかれば、rcube_userクラスをインスタンス化し
ユーザー情報やユーザーの識別情報を取得出来ます。

例えば、次のようになります。

$user_id = 4;
$user = new rcube_user($user_id);
$user_data = $user->data;
$user_identity = $user->get_identity();
error_log(print_r($user_data,true));
error_log(print_r($user_identity,true));
Facebooktwittergoogle_pluslinkedintumblrmail

Roundcubeプラグイン設定ファイルの利用方法

Roundcubeプラグイン設定ファイルの利用方法を紹介します。

以下のように設定ファイルを用意します。

ソースは以下のようになります。

sample.php

rc = rcmail::get_instance();

//設定ファイルをロード
$this->load_config('config/config.inc.php');
}

function init() {
$name = $this->rc->config->get('sample.user', '');
error_log('name:'.$name);
}

}

config.inc.php


割と簡単に使えるようです。

rc->config->get('sample.user', '');
?>

ここのconfigの実態はrcube_configオブジェクトになります。
getメソッドの第二引数は値が取得出来なかった場合のデフォルト値になります。

注意点としては


コンストラクタの中で親クラスであるrcube_pluginのコンストラクタを
必ず呼び出す必要があります。

rcube_pluginクラスのコンストラクタは以下のようになっています。

ID = get_class($this);
    $this->api = $api;
    $this->home = $api->dir . $this->ID;
    $this->urlbase = $api->url . $this->ID . '/';
  }
?>

homeディレクトリなどの値を設定しています。

そして、rcube_pluginクラスのload_configメソッドは以下のようになっています。

home.'/'.$fname;
    $rcmail = rcmail::get_instance();
    if (is_file($fpath) && !$rcmail->config->load_from_file($fpath)) {
      raise_error(array('code' => 527, 'type' => 'php',
        'file' => __FILE__, 'line' => __LINE__,
        'message' => "Failed to load config from $fpath"), true, false);
      return false;
    }

    return true;
  }
?>

ここで設定ファイルの場所を取得するためにhome変数を使用しているため
rcube_pluginクラスのコンストラクタを呼び出していないと設定ファイルを取得出来なくなります。

Facebooktwittergoogle_pluslinkedintumblrmail