豊福です。
> 表示されるエラーは
> permission denied. Command output: Request was denied by your Redmine
> server. Possible reasons: email is sent from an invalid email address
> or is missing some information.
> なので、メールアドレスが不正で権限を持たないエラーだと思われます。
バージョン 1.1.2 ですが同じ状況にしてデバッグ出力しながらコードを追ってみました。
app/models/mail_handler.rb の receive -> dispatch -> issue_receive を通っ
て、
app/models/user.rb の allowed_to? のメソッド定義の中の
roles.detect {|role| (context.is_public? || role.member?) &&
role.allowed_to?(action)}
の結果が nil になってはじかれていました。
このときの roles は
[#<Role id: 2, name: "Anonymous", position: 2, assignable: true,
builtin: 2,
permissions:
[:view_calendar, :view_documents, :view_files, :view_gantt, :view_issues,
:add_issues, :edit_issues, :manage_issue_relations, :browse_repository,
:view_changesets, :view_time_entries, :view_wiki_pages, :view_wiki_edits]>]
で role.member? は false になっています。
コードをいじらないとするとプロジェクトを公開に(context.is_public? を true に)
するしかなさそうに思います。あくまでもプロジェクトを公開したくなければ
role.member? のところをいじることになるのでしょう。
ちなみに app/models/role.rb では
def member?; !self.builtin?; end
def built-in?; self.builtin != 0; end
と定義されていて Anonyumous の builtin は 2 なので role.member? は
false になります。
> また、匿名メールでチケット登録した場合、ちゃんとその匿名メール宛にチケット登録通知って飛ぶのでしょうか?
app/models/mail_handler.rb の receiveメソッドを見る限りメール送信者
(コード中の sender_email)は匿名メールのときはその後の処理に使われて
いないのでチケット登録通知メールは飛ばないようです。実際私が試した
ときも通知メールはきませんでした。
---