Opened 14 years ago

Closed 13 years ago

#178 closed enhancement (fixed)

Notification of sender independent from trac.ini

Reported by: hju@… Owned by: bas
Priority: major Milestone: release 2.0.0
Component: email2trac Version: 1.0.0
Keywords: Cc:


Looking at a solution for our problems in #176 I traced down to the real cause.

Normaly we don't want to inform the updater with any notification. Also the reporter should get infos only if the ticket is closed (we don't want to bother him with all the steps towards this)

There is only one difference: if the reporter has sent an email and the ticket is created by email2trac, he should get a confirmation with the ticket number.

So the question was: how to separate notifications for "normal tickets" from notifications for tickets via email2trac.

I took the easy way. Separate it at the root - in email2trac itself.

I wrote some lines of code to achive a notification triggered by email2trac regardeless the configuration of trac.ini (see attachment)
(This might be enhanced with options for email2trac.conf, if necessary)
It's a "quick hack" and perhaps not in high sophisticated python, but is works. I let trac do the whole work and insert the email of the sender just before mailing the ticket...

--- email2trac_1.0.0	2009-09-02 10:57:42.000000000 +0200
+++ email2trac_1_0_0_new	2010-02-12 20:08:43.000000000 +0100
@@ -85,11 +85,13 @@
 from datetime import tzinfo, timedelta, datetime
 from trac import config as trac_config
+import trac.notification as TracNotification
 # Some global variables
 trac_default_version = '0.11'
 m = None 
+sender_email = ''
 # A UTC class needed for trac version 0.11, added by
 # tbaschak at ktc dot mb dot ca
@@ -435,6 +437,7 @@
 		Get the default author name and email address from the message
+		global sender_email
 		self.email_to = self.email_to_unicode(message['to']) 
 		self.to_name, self.to_email_addr = email.Utils.parseaddr (self.email_to) 
@@ -445,6 +448,7 @@
 		# Trac can not handle author's name that contains spaces
 		# = self.email_addr
+		sender_email = self.email_addr

This following block is not really part of the patch, but it removes unecessary changelog-entrys for new tickets (i used them as workaround). (may be skipped)

@@ -824,7 +828,6 @@
 		if self.notify_template:
 			tkt['id'] =
-			changed = True
 		# Rewrite the description if we have mailto enabled
@@ -1451,8 +1454,9 @@
-		# Return how many attachments
+		# Return how many attachments if > 0 or problems with attachment size
+		if status or count > 0:
 			status = 'This message has %d attachment(s)\n%s' %(count, status)
 		return status

here comes the little wrapper:

@@ -1499,6 +1503,22 @@
 	return project
+def WrapNotify(self, resid):
+	"""
+	Copy of def notify() to manipulate recipents 
+	"""
+	(torcpts, ccrcpts) = self.get_recipients(resid)
+	# additionally append sender (regardeless of settings in trac.ini)
+	#
+	torcpts.append(sender_email)
+	self.begin_send()
+	self.send(torcpts, ccrcpts)
+	self.finish_send()
+TracNotification.Notify.notify = WrapNotify
 if __name__ == '__main__':
 	# Default config file

Attachments (1)

email2trac_178.diff (1.8 KB) - added by hju@… 14 years ago.
Patch against 1.0.0

Download all attachments as: .zip

Change History (6)

Changed 14 years ago by hju@…

Patch against 1.0.0

comment:1 Changed 13 years ago by bas

(In [508]) We now can override the notify function with AlwaysNotifyReport?, see #178,#229

comment:2 Changed 13 years ago by anonymous

  • Owner changed from bas to anonymous

Can you test this version?

comment:3 Changed 13 years ago by bas

  • Owner changed from anonymous to bas
  • Status changed from new to assigned

comment:4 Changed 13 years ago by bas

  • Milestone set to release 2.0.0

comment:5 Changed 13 years ago by bas

  • Resolution set to fixed
  • Status changed from assigned to closed

Add Comment

Modify Ticket

Change Properties
as closed The owner will remain bas.
The resolution will be deleted. Next status will be 'reopened'.

E-mail address and user name can be saved in the Preferences.

Note: See TracTickets for help on using tickets.