メールアドレスを複数件登録する方法

2,028 views
Skip to first unread message

picardpapa

unread,
Jun 24, 2011, 2:30:39 PM6/24/11
to Redmine Users (japanese)
Redmine初心者です。

ユーザ管理画面のメールアドレス欄に複数のメールアドレスを設定する方法はあるでしょうか?
やりたいのは、担当のチケットが登録された際に社用のメールアドレスとケータイのメアドの両方に
通知が届くようにしたいのです。
カンマ(,)で複数のメアドを並べたりしたんですが、書式エラーではじかれました。
何か方法があるのであれば、ご教示いただきたく、よろしくお願いいたします。

fmkt

unread,
Jun 28, 2011, 12:49:05 AM6/28/11
to Redmine Users (japanese)
こんにちは。

メールアドレスのチェックは以下で行われています。
app/models/user.rb
validates_format_of :mail, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-
z]{2,})$/i, :allow_nil => true
validates_length_of :mail, :maximum => 60, :allow_nil => true

そのため、上記部分を "," でつなぐフォーマットでも大丈夫なように変更するか、
チェック自体をやめる(消す)かをしないと難しいのではないでしょうか?


ソースを触ることに躊躇がなければ上のvalidatesを削除して以下のように変更すればおそらく可能です。
(","の後にスペースとかついてると通らないので適宜正規表現を変更していただければ…。)


validate :check_mail_addresses?

def check_mail_addresses?
return false if !mail.blank? && mail.size > 60
mail.split(",").each do |addr|
unless addr =~ (/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i)
errors.add(:mail, :invalid, :value => addr)
end
end
end


ただ、メールアドレスに","などでつないで複数登録を許可してしまうと
メールによるRedmineのチケットを作成/変更・履歴の追加などが行えなくなるかもしれません。
他にも影響があるかもしれませんが調べきれていません...

あと複数登録してちゃんとメールが飛ぶかの確認はしていません。


運用でカバーできるなら "社用のメールアドレスとケータイのメアド" に転送してくれるアドレスを用意して
それをRedmineに設定するというような方法はいかがでしょうか。

Haru

unread,
Jun 28, 2011, 10:26:26 AM6/28/11
to Redmine Users (japanese)
こんにちは。飯田です。

* ユーザアカウントにサブのメールアドレス用カスタムフィールドを追加する。
* Issueクラスのrecipientsメソッドを改造してカスタムフィールドのアドレスもあて先に加えるようにする。(配列notifiedにア
ドレスを追加する)

で行けるかな。試してませんが。

picardpapa

unread,
Jun 28, 2011, 12:31:44 PM6/28/11
to Redmine Users (japanese)
fmktさん、飯田さん

回答ありがとうございます。
ソースに手を入れないとちょっと無理そうなんですね。
当方、ホスティングサービスでredmineを使用しているものですから、
ソースに手を加えるのは難しいです。
今回の件は実現難しそうと言うことで、理解しました。

忙しいところ、回答ありがとうございました。
お手数おかけしました。

nemo

unread,
Feb 15, 2013, 9:24:23 PM2/15/13
to redmine-...@googlegroups.com, picar...@gmail.com
こんにちは。
同じことに興味を持ち,「DBもUIもそのままに,user.mail にカンマ区切りで複数のメールアドレスを抱えさせる」という
いまいちなアプローチの場当たりプラグインを試作してみたところ,なんだか意外に大丈夫そうです。

Rails3.2.11 Redmine2.2.1でしか見ていないのですが,
Userモデルのvalidationを書き直すのと,User.find_by_mail を直してやれば,UIを崩さずに目的が達成できます。
(できているような気がします。目下,のんびりですが User#mail が呼ばれている個所をチェックしてます)

以下背景:
各モデルの #recipients はそれぞれ users_to_notify.map(&:mail) みたいなコードで書かれていて,これが実は幸運です。
最近のメールライブラリ(https://github.com/mikel/mail)はなにげにアドレス系ヘッダーフィールドを生成する時の引数が
変な構造をしてても平気,たとえば
みたいなことになっててもいい具合にパースしてflattenとかしてくれて,正しく
のようにヘッダーを組み立ててくれます。
Reply all
Reply to author
Forward
0 new messages