Patch #3732 » patch_incoming_mail_notify_error.diff
app/models/mailer.rb (working copy) | ||
---|---|---|
248 | 248 |
subject 'Redmine test' |
249 | 249 |
body :url => url_for(:controller => 'welcome') |
250 | 250 |
end |
251 |
|
|
252 |
def notify_incoming_error(raw_email) |
|
253 |
recipients User.active.find(:all, :conditions => {:admin => true}).collect { |u| u.mail }.compact |
|
254 |
subject 'Incoming mail error notification' |
|
255 |
orignal_mail = TMail::Mail.parse(raw_email) |
|
256 |
orignal_mail.base64_decode |
|
257 |
body :original_mail =>orignal_mail; |
|
258 |
end |
|
251 | 259 | |
252 | 260 |
# Overrides default deliver! method to prevent from sending an email |
253 | 261 |
# with no recipient, cc or bcc |
app/views/mailer/notify_incoming_error.text.plain.rhtml (revision 0) | ||
---|---|---|
1 |
This email was received by redmine and cound not be processed. |
|
2 | ||
3 |
From :<%= @original_mail.from %> |
|
4 |
Subject :<%= @original_mail.subject %> |
|
5 |
------ BEGIN ------- |
|
6 |
<%= @original_mail.body %> |
|
7 |
------ END ------- |
lib/redmine/imap.rb (working copy) | ||
---|---|---|
21 | 21 |
module IMAP |
22 | 22 |
class << self |
23 | 23 |
def check(imap_options={}, options={}) |
24 |
logger.debug "Checking messages" if logger && logger.debug? |
|
24 | 25 |
host = imap_options[:host] || '127.0.0.1' |
25 | 26 |
port = imap_options[:port] || '143' |
26 | 27 |
ssl = !imap_options[:ssl].nil? |
... | ... | |
41 | 42 |
else |
42 | 43 |
logger.debug "Message #{message_id} can not be processed" if logger && logger.debug? |
43 | 44 |
imap.store(message_id, "+FLAGS", [:Seen]) |
45 |
if imap_options[:notify_on_failure] |
|
46 |
logger.debug "Notify for failure" if logger && logger.debug? |
|
47 |
Mailer.deliver_notify_incoming_error(msg) |
|
48 |
end |
|
44 | 49 |
if imap_options[:move_on_failure] |
45 | 50 |
imap.copy(message_id, imap_options[:move_on_failure]) |
46 | 51 |
imap.store(message_id, "+FLAGS", [:Deleted]) |
47 | 52 |
end |
53 | ||
48 | 54 |
end |
49 | 55 |
end |
50 | 56 |
imap.expunge |
lib/tasks/email.rake (working copy) | ||
---|---|---|
91 | 91 |
move_on_success=MAILBOX move emails that were successfully received |
92 | 92 |
to MAILBOX instead of deleting them |
93 | 93 |
move_on_failure=MAILBOX move emails that were ignored to MAILBOX |
94 |
notify_on_failure notify redmine administrators when an error occurs |
|
94 | 95 |
|
95 | 96 |
Examples: |
96 | 97 |
# No project specified. Emails MUST contain the 'Project' keyword: |
... | ... | |
117 | 118 |
:password => ENV['password'], |
118 | 119 |
:folder => ENV['folder'], |
119 | 120 |
:move_on_success => ENV['move_on_success'], |
120 |
:move_on_failure => ENV['move_on_failure']} |
|
121 |
:move_on_failure => ENV['move_on_failure'], |
|
122 |
:notify_on_failure => ENV['notify_on_failure']} |
|
121 | 123 |
|
122 | 124 |
options = { :issue => {} } |
123 | 125 |
%w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] } |