##// END OF EJS Templates
set svn:eol-style native lib/tasks/email.rake...
Toshi MARUYAMA -
r8944:c474d59b0bd3
parent child
Show More
@@ -1,186 +1,186
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2011 Jean-Philippe Lang
2 # Copyright (C) 2006-2011 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
32
33 Issue attributes control options:
33 Issue attributes control options:
34 project=PROJECT identifier of the target project
34 project=PROJECT identifier of the target project
35 status=STATUS name of the target status
35 status=STATUS name of the target status
36 tracker=TRACKER name of the target tracker
36 tracker=TRACKER name of the target tracker
37 category=CATEGORY name of the target category
37 category=CATEGORY name of the target category
38 priority=PRIORITY name of the target priority
38 priority=PRIORITY name of the target priority
39 allow_override=ATTRS allow email content to override attributes
39 allow_override=ATTRS allow email content to override attributes
40 specified by previous options
40 specified by previous options
41 ATTRS is a comma separated list of attributes
41 ATTRS is a comma separated list of attributes
42
42
43 Examples:
43 Examples:
44 # No project specified. Emails MUST contain the 'Project' keyword:
44 # No project specified. Emails MUST contain the 'Project' keyword:
45 rake redmine:email:read RAILS_ENV="production" < raw_email
45 rake redmine:email:read RAILS_ENV="production" < raw_email
46
46
47 # Fixed project and default tracker specified, but emails can override
47 # Fixed project and default tracker specified, but emails can override
48 # both tracker and priority attributes:
48 # both tracker and priority attributes:
49 rake redmine:email:read RAILS_ENV="production" \\
49 rake redmine:email:read RAILS_ENV="production" \\
50 project=foo \\
50 project=foo \\
51 tracker=bug \\
51 tracker=bug \\
52 allow_override=tracker,priority < raw_email
52 allow_override=tracker,priority < raw_email
53 END_DESC
53 END_DESC
54
54
55 task :read => :environment do
55 task :read => :environment do
56 options = { :issue => {} }
56 options = { :issue => {} }
57 %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
57 %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']
58 options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
59 options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
59 options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
60 options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
60 options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
61
61
62 MailHandler.receive(STDIN.read, options)
62 MailHandler.receive(STDIN.read, options)
63 end
63 end
64
64
65 desc <<-END_DESC
65 desc <<-END_DESC
66 Read emails from an IMAP server.
66 Read emails from an IMAP server.
67
67
68 General options:
68 General options:
69 unknown_user=ACTION how to handle emails from an unknown user
69 unknown_user=ACTION how to handle emails from an unknown user
70 ACTION can be one of the following values:
70 ACTION can be one of the following values:
71 ignore: email is ignored (default)
71 ignore: email is ignored (default)
72 accept: accept as anonymous user
72 accept: accept as anonymous user
73 create: create a user account
73 create: create a user account
74 no_permission_check=1 disable permission checking when receiving
74 no_permission_check=1 disable permission checking when receiving
75 the email
75 the email
76
76
77 Available IMAP options:
77 Available IMAP options:
78 host=HOST IMAP server host (default: 127.0.0.1)
78 host=HOST IMAP server host (default: 127.0.0.1)
79 port=PORT IMAP server port (default: 143)
79 port=PORT IMAP server port (default: 143)
80 ssl=SSL Use SSL? (default: false)
80 ssl=SSL Use SSL? (default: false)
81 username=USERNAME IMAP account
81 username=USERNAME IMAP account
82 password=PASSWORD IMAP password
82 password=PASSWORD IMAP password
83 folder=FOLDER IMAP folder to read (default: INBOX)
83 folder=FOLDER IMAP folder to read (default: INBOX)
84
84
85 Issue attributes control options:
85 Issue attributes control options:
86 project=PROJECT identifier of the target project
86 project=PROJECT identifier of the target project
87 status=STATUS name of the target status
87 status=STATUS name of the target status
88 tracker=TRACKER name of the target tracker
88 tracker=TRACKER name of the target tracker
89 category=CATEGORY name of the target category
89 category=CATEGORY name of the target category
90 priority=PRIORITY name of the target priority
90 priority=PRIORITY name of the target priority
91 allow_override=ATTRS allow email content to override attributes
91 allow_override=ATTRS allow email content to override attributes
92 specified by previous options
92 specified by previous options
93 ATTRS is a comma separated list of attributes
93 ATTRS is a comma separated list of attributes
94
94
95 Processed emails control options:
95 Processed emails control options:
96 move_on_success=MAILBOX move emails that were successfully received
96 move_on_success=MAILBOX move emails that were successfully received
97 to MAILBOX instead of deleting them
97 to MAILBOX instead of deleting them
98 move_on_failure=MAILBOX move emails that were ignored to MAILBOX
98 move_on_failure=MAILBOX move emails that were ignored to MAILBOX
99
99
100 Examples:
100 Examples:
101 # No project specified. Emails MUST contain the 'Project' keyword:
101 # No project specified. Emails MUST contain the 'Project' keyword:
102
102
103 rake redmine:email:receive_imap RAILS_ENV="production" \\
103 rake redmine:email:receive_imap RAILS_ENV="production" \\
104 host=imap.foo.bar username=redmine@example.net password=xxx
104 host=imap.foo.bar username=redmine@example.net password=xxx
105
105
106
106
107 # Fixed project and default tracker specified, but emails can override
107 # Fixed project and default tracker specified, but emails can override
108 # both tracker and priority attributes:
108 # both tracker and priority attributes:
109
109
110 rake redmine:email:receive_imap RAILS_ENV="production" \\
110 rake redmine:email:receive_imap RAILS_ENV="production" \\
111 host=imap.foo.bar username=redmine@example.net password=xxx ssl=1 \\
111 host=imap.foo.bar username=redmine@example.net password=xxx ssl=1 \\
112 project=foo \\
112 project=foo \\
113 tracker=bug \\
113 tracker=bug \\
114 allow_override=tracker,priority
114 allow_override=tracker,priority
115 END_DESC
115 END_DESC
116
116
117 task :receive_imap => :environment do
117 task :receive_imap => :environment do
118 imap_options = {:host => ENV['host'],
118 imap_options = {:host => ENV['host'],
119 :port => ENV['port'],
119 :port => ENV['port'],
120 :ssl => ENV['ssl'],
120 :ssl => ENV['ssl'],
121 :username => ENV['username'],
121 :username => ENV['username'],
122 :password => ENV['password'],
122 :password => ENV['password'],
123 :folder => ENV['folder'],
123 :folder => ENV['folder'],
124 :move_on_success => ENV['move_on_success'],
124 :move_on_success => ENV['move_on_success'],
125 :move_on_failure => ENV['move_on_failure']}
125 :move_on_failure => ENV['move_on_failure']}
126
126
127 options = { :issue => {} }
127 options = { :issue => {} }
128 %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
128 %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']
129 options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
130 options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
130 options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
131 options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
131 options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
132
132
133 Redmine::IMAP.check(imap_options, options)
133 Redmine::IMAP.check(imap_options, options)
134 end
134 end
135
135
136 desc <<-END_DESC
136 desc <<-END_DESC
137 Read emails from an POP3 server.
137 Read emails from an POP3 server.
138
138
139 Available POP3 options:
139 Available POP3 options:
140 host=HOST POP3 server host (default: 127.0.0.1)
140 host=HOST POP3 server host (default: 127.0.0.1)
141 port=PORT POP3 server port (default: 110)
141 port=PORT POP3 server port (default: 110)
142 username=USERNAME POP3 account
142 username=USERNAME POP3 account
143 password=PASSWORD POP3 password
143 password=PASSWORD POP3 password
144 apop=1 use APOP authentication (default: false)
144 apop=1 use APOP authentication (default: false)
145 delete_unprocessed=1 delete messages that could not be processed
145 delete_unprocessed=1 delete messages that could not be processed
146 successfully from the server (default
146 successfully from the server (default
147 behaviour is to leave them on the server)
147 behaviour is to leave them on the server)
148
148
149 See redmine:email:receive_imap for more options and examples.
149 See redmine:email:receive_imap for more options and examples.
150 END_DESC
150 END_DESC
151
151
152 task :receive_pop3 => :environment do
152 task :receive_pop3 => :environment do
153 pop_options = {:host => ENV['host'],
153 pop_options = {:host => ENV['host'],
154 :port => ENV['port'],
154 :port => ENV['port'],
155 :apop => ENV['apop'],
155 :apop => ENV['apop'],
156 :username => ENV['username'],
156 :username => ENV['username'],
157 :password => ENV['password'],
157 :password => ENV['password'],
158 :delete_unprocessed => ENV['delete_unprocessed']}
158 :delete_unprocessed => ENV['delete_unprocessed']}
159
159
160 options = { :issue => {} }
160 options = { :issue => {} }
161 %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
161 %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']
162 options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
163 options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
163 options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
164 options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
164 options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
165
165
166 Redmine::POP3.check(pop_options, options)
166 Redmine::POP3.check(pop_options, options)
167 end
167 end
168
168
169 desc "Send a test email to the user with the provided login name"
169 desc "Send a test email to the user with the provided login name"
170 task :test, [:login] => :environment do |task, args|
170 task :test, [:login] => :environment do |task, args|
171 include Redmine::I18n
171 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?
172 abort l(:notice_email_error, "Please include the user login to test with. Example: rake redmine:email:test[login]") if args[:login].blank?
173
173
174 user = User.find_by_login(args[:login])
174 user = User.find_by_login(args[:login])
175 abort l(:notice_email_error, "User #{args[:login]} not found") unless user && user.logged?
175 abort l(:notice_email_error, "User #{args[:login]} not found") unless user && user.logged?
176
176
177 ActionMailer::Base.raise_delivery_errors = true
177 ActionMailer::Base.raise_delivery_errors = true
178 begin
178 begin
179 Mailer.deliver_test(User.current)
179 Mailer.deliver_test(User.current)
180 puts l(:notice_email_sent, user.mail)
180 puts l(:notice_email_sent, user.mail)
181 rescue Exception => e
181 rescue Exception => e
182 abort l(:notice_email_error, e.message)
182 abort l(:notice_email_error, e.message)
183 end
183 end
184 end
184 end
185 end
185 end
186 end
186 end
General Comments 0
You need to be logged in to leave comments. Login now