comparison lib/tasks/.svn/text-base/email.rake.svn-base @ 441:cbce1fd3b1b7 redmine-1.2

Update to Redmine 1.2-stable branch (Redmine SVN rev 6000)
author Chris Cannam
date Mon, 06 Jun 2011 14:24:13 +0100
parents 94944d00e43c
children
comparison
equal deleted inserted replaced
245:051f544170fe 441:cbce1fd3b1b7
1 # Redmine - project management software 1 # Redmine - project management software
2 # Copyright (C) 2006-2008 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
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
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
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_iamp RAILS_ENV="production" \\ 103 rake redmine:email:receive_iamp 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_iamp RAILS_ENV="production" \\ 110 rake redmine:email:receive_iamp 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
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)
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, :needs => :environment do |task, args| 170 task :test, :login, :needs => :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: login=examle-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.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