##// END OF EJS Templates
Fetching emails via rake task does not support --no-account-notice and --default-group options (#13712)....
Jean-Philippe Lang -
r11518:2ad04658644f
parent child
Show More
@@ -1,188 +1,198
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2013 Jean-Philippe Lang
2 # Copyright (C) 2006-2013 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 namespace :redmine do
18 namespace :redmine do
19 namespace :email do
19 namespace :email do
20
20
21 desc <<-END_DESC
21 desc <<-END_DESC
22 Read an email from standard input.
22 Read an email from standard input.
23
23
24 General options:
24 General options:
25 unknown_user=ACTION how to handle emails from an unknown user
25 unknown_user=ACTION how to handle emails from an unknown user
26 ACTION can be one of the following values:
26 ACTION can be one of the following values:
27 ignore: email is ignored (default)
27 ignore: email is ignored (default)
28 accept: accept as anonymous user
28 accept: accept as anonymous user
29 create: create a user account
29 create: create a user account
30 no_permission_check=1 disable permission checking when receiving
30 no_permission_check=1 disable permission checking when receiving
31 the email
31 the email
32 no_account_notice=1 disable new user account notification
33 default_group=foo,bar adds created user to foo and bar groups
32
34
33 Issue attributes control options:
35 Issue attributes control options:
34 project=PROJECT identifier of the target project
36 project=PROJECT identifier of the target project
35 status=STATUS name of the target status
37 status=STATUS name of the target status
36 tracker=TRACKER name of the target tracker
38 tracker=TRACKER name of the target tracker
37 category=CATEGORY name of the target category
39 category=CATEGORY name of the target category
38 priority=PRIORITY name of the target priority
40 priority=PRIORITY name of the target priority
39 allow_override=ATTRS allow email content to override attributes
41 allow_override=ATTRS allow email content to override attributes
40 specified by previous options
42 specified by previous options
41 ATTRS is a comma separated list of attributes
43 ATTRS is a comma separated list of attributes
42
44
43 Examples:
45 Examples:
44 # No project specified. Emails MUST contain the 'Project' keyword:
46 # No project specified. Emails MUST contain the 'Project' keyword:
45 rake redmine:email:read RAILS_ENV="production" < raw_email
47 rake redmine:email:read RAILS_ENV="production" < raw_email
46
48
47 # Fixed project and default tracker specified, but emails can override
49 # Fixed project and default tracker specified, but emails can override
48 # both tracker and priority attributes:
50 # both tracker and priority attributes:
49 rake redmine:email:read RAILS_ENV="production" \\
51 rake redmine:email:read RAILS_ENV="production" \\
50 project=foo \\
52 project=foo \\
51 tracker=bug \\
53 tracker=bug \\
52 allow_override=tracker,priority < raw_email
54 allow_override=tracker,priority < raw_email
53 END_DESC
55 END_DESC
54
56
55 task :read => :environment do
57 task :read => :environment do
56 options = { :issue => {} }
58 options = { :issue => {} }
57 %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
59 %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
58 options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
60 options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
59 options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
61 options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
60 options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
62 options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
63 options[:no_account_notice] = ENV['no_account_notice'] if ENV['no_account_notice']
64 options[:default_group] = ENV['default_group'] if ENV['default_group']
61
65
62 MailHandler.receive(STDIN.read, options)
66 MailHandler.receive(STDIN.read, options)
63 end
67 end
64
68
65 desc <<-END_DESC
69 desc <<-END_DESC
66 Read emails from an IMAP server.
70 Read emails from an IMAP server.
67
71
68 General options:
72 General options:
69 unknown_user=ACTION how to handle emails from an unknown user
73 unknown_user=ACTION how to handle emails from an unknown user
70 ACTION can be one of the following values:
74 ACTION can be one of the following values:
71 ignore: email is ignored (default)
75 ignore: email is ignored (default)
72 accept: accept as anonymous user
76 accept: accept as anonymous user
73 create: create a user account
77 create: create a user account
74 no_permission_check=1 disable permission checking when receiving
78 no_permission_check=1 disable permission checking when receiving
75 the email
79 the email
80 no_account_notice=1 disable new user account notification
81 default_group=foo,bar adds created user to foo and bar groups
76
82
77 Available IMAP options:
83 Available IMAP options:
78 host=HOST IMAP server host (default: 127.0.0.1)
84 host=HOST IMAP server host (default: 127.0.0.1)
79 port=PORT IMAP server port (default: 143)
85 port=PORT IMAP server port (default: 143)
80 ssl=SSL Use SSL? (default: false)
86 ssl=SSL Use SSL? (default: false)
81 username=USERNAME IMAP account
87 username=USERNAME IMAP account
82 password=PASSWORD IMAP password
88 password=PASSWORD IMAP password
83 folder=FOLDER IMAP folder to read (default: INBOX)
89 folder=FOLDER IMAP folder to read (default: INBOX)
84
90
85 Issue attributes control options:
91 Issue attributes control options:
86 project=PROJECT identifier of the target project
92 project=PROJECT identifier of the target project
87 status=STATUS name of the target status
93 status=STATUS name of the target status
88 tracker=TRACKER name of the target tracker
94 tracker=TRACKER name of the target tracker
89 category=CATEGORY name of the target category
95 category=CATEGORY name of the target category
90 priority=PRIORITY name of the target priority
96 priority=PRIORITY name of the target priority
91 allow_override=ATTRS allow email content to override attributes
97 allow_override=ATTRS allow email content to override attributes
92 specified by previous options
98 specified by previous options
93 ATTRS is a comma separated list of attributes
99 ATTRS is a comma separated list of attributes
94
100
95 Processed emails control options:
101 Processed emails control options:
96 move_on_success=MAILBOX move emails that were successfully received
102 move_on_success=MAILBOX move emails that were successfully received
97 to MAILBOX instead of deleting them
103 to MAILBOX instead of deleting them
98 move_on_failure=MAILBOX move emails that were ignored to MAILBOX
104 move_on_failure=MAILBOX move emails that were ignored to MAILBOX
99
105
100 Examples:
106 Examples:
101 # No project specified. Emails MUST contain the 'Project' keyword:
107 # No project specified. Emails MUST contain the 'Project' keyword:
102
108
103 rake redmine:email:receive_imap RAILS_ENV="production" \\
109 rake redmine:email:receive_imap RAILS_ENV="production" \\
104 host=imap.foo.bar username=redmine@example.net password=xxx
110 host=imap.foo.bar username=redmine@example.net password=xxx
105
111
106
112
107 # Fixed project and default tracker specified, but emails can override
113 # Fixed project and default tracker specified, but emails can override
108 # both tracker and priority attributes:
114 # both tracker and priority attributes:
109
115
110 rake redmine:email:receive_imap RAILS_ENV="production" \\
116 rake redmine:email:receive_imap RAILS_ENV="production" \\
111 host=imap.foo.bar username=redmine@example.net password=xxx ssl=1 \\
117 host=imap.foo.bar username=redmine@example.net password=xxx ssl=1 \\
112 project=foo \\
118 project=foo \\
113 tracker=bug \\
119 tracker=bug \\
114 allow_override=tracker,priority
120 allow_override=tracker,priority
115 END_DESC
121 END_DESC
116
122
117 task :receive_imap => :environment do
123 task :receive_imap => :environment do
118 imap_options = {:host => ENV['host'],
124 imap_options = {:host => ENV['host'],
119 :port => ENV['port'],
125 :port => ENV['port'],
120 :ssl => ENV['ssl'],
126 :ssl => ENV['ssl'],
121 :username => ENV['username'],
127 :username => ENV['username'],
122 :password => ENV['password'],
128 :password => ENV['password'],
123 :folder => ENV['folder'],
129 :folder => ENV['folder'],
124 :move_on_success => ENV['move_on_success'],
130 :move_on_success => ENV['move_on_success'],
125 :move_on_failure => ENV['move_on_failure']}
131 :move_on_failure => ENV['move_on_failure']}
126
132
127 options = { :issue => {} }
133 options = { :issue => {} }
128 %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
134 %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
129 options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
135 options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
130 options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
136 options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
131 options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
137 options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
138 options[:no_account_notice] = ENV['no_account_notice'] if ENV['no_account_notice']
139 options[:default_group] = ENV['default_group'] if ENV['default_group']
132
140
133 Redmine::IMAP.check(imap_options, options)
141 Redmine::IMAP.check(imap_options, options)
134 end
142 end
135
143
136 desc <<-END_DESC
144 desc <<-END_DESC
137 Read emails from an POP3 server.
145 Read emails from an POP3 server.
138
146
139 Available POP3 options:
147 Available POP3 options:
140 host=HOST POP3 server host (default: 127.0.0.1)
148 host=HOST POP3 server host (default: 127.0.0.1)
141 port=PORT POP3 server port (default: 110)
149 port=PORT POP3 server port (default: 110)
142 username=USERNAME POP3 account
150 username=USERNAME POP3 account
143 password=PASSWORD POP3 password
151 password=PASSWORD POP3 password
144 apop=1 use APOP authentication (default: false)
152 apop=1 use APOP authentication (default: false)
145 delete_unprocessed=1 delete messages that could not be processed
153 delete_unprocessed=1 delete messages that could not be processed
146 successfully from the server (default
154 successfully from the server (default
147 behaviour is to leave them on the server)
155 behaviour is to leave them on the server)
148
156
149 See redmine:email:receive_imap for more options and examples.
157 See redmine:email:receive_imap for more options and examples.
150 END_DESC
158 END_DESC
151
159
152 task :receive_pop3 => :environment do
160 task :receive_pop3 => :environment do
153 pop_options = {:host => ENV['host'],
161 pop_options = {:host => ENV['host'],
154 :port => ENV['port'],
162 :port => ENV['port'],
155 :apop => ENV['apop'],
163 :apop => ENV['apop'],
156 :username => ENV['username'],
164 :username => ENV['username'],
157 :password => ENV['password'],
165 :password => ENV['password'],
158 :delete_unprocessed => ENV['delete_unprocessed']}
166 :delete_unprocessed => ENV['delete_unprocessed']}
159
167
160 options = { :issue => {} }
168 options = { :issue => {} }
161 %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
169 %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
162 options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
170 options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
163 options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
171 options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
164 options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
172 options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
173 options[:no_account_notice] = ENV['no_account_notice'] if ENV['no_account_notice']
174 options[:default_group] = ENV['default_group'] if ENV['default_group']
165
175
166 Redmine::POP3.check(pop_options, options)
176 Redmine::POP3.check(pop_options, options)
167 end
177 end
168
178
169 desc "Send a test email to the user with the provided login name"
179 desc "Send a test email to the user with the provided login name"
170 task :test, [:login] => :environment do |task, args|
180 task :test, [:login] => :environment do |task, args|
171 include Redmine::I18n
181 include Redmine::I18n
172 abort l(:notice_email_error, "Please include the user login to test with. Example: rake redmine:email:test[login]") if args[:login].blank?
182 abort l(:notice_email_error, "Please include the user login to test with. Example: rake redmine:email:test[login]") if args[:login].blank?
173
183
174 user = User.find_by_login(args[:login])
184 user = User.find_by_login(args[:login])
175 abort l(:notice_email_error, "User #{args[:login]} not found") unless user && user.logged?
185 abort l(:notice_email_error, "User #{args[:login]} not found") unless user && user.logged?
176
186
177 ActionMailer::Base.raise_delivery_errors = true
187 ActionMailer::Base.raise_delivery_errors = true
178 begin
188 begin
179 Mailer.with_synched_deliveries do
189 Mailer.with_synched_deliveries do
180 Mailer.test_email(user).deliver
190 Mailer.test_email(user).deliver
181 end
191 end
182 puts l(:notice_email_sent, user.mail)
192 puts l(:notice_email_sent, user.mail)
183 rescue Exception => e
193 rescue Exception => e
184 abort l(:notice_email_error, e.message)
194 abort l(:notice_email_error, e.message)
185 end
195 end
186 end
196 end
187 end
197 end
188 end
198 end
General Comments 0
You need to be logged in to leave comments. Login now