Opened 11 years ago
Closed 8 years ago
#11176 closed defect (wontfix)
Cannot sent emails on changes to tickets
Reported by: | Owned by: | ||
---|---|---|---|
Priority: | normal | Component: | AnnouncerPlugin |
Severity: | normal | Keywords: | |
Cc: | Trac Release: |
Description
I have several Trac installations with (what I think are) identical setups that use TracAnnouncer 1-0dev plugin for notifications.
My standard Trac installations all work as expected for email distribution, but the Trac instance that has Agilo installed (http://www.agilosoftware.com/) only sends email when a ticket is first created, and fails to send email notifications on subsequent changes to the ticket.
This is the debug log from Trac when the system tries to send an email in response to an update to a ticket...
2013-06-19 12:57:46,207 Trac[api] DEBUG: Adding (user1 [1]) for 'always' on rule (TicketOwnerSubscriber) for (email) 2013-06-19 12:57:46,207 Trac[api] DEBUG: Adding (user2 [1]) for 'always' on rule (TicketReporterSubscriber) for (email) 2013-06-19 12:57:46,207 Trac[api] DEBUG: Adding (somebody [1]) for 'always' on rule (TicketComponentOwnerSubscriber) for (email) 2013-06-19 12:57:46,208 Trac[filters] DEBUG: Checking *_VIEW permission on event for resource ticket:88 2013-06-19 12:57:46,209 Trac[filters] DEBUG: Checking *_VIEW permission on event for resource ticket:88 2013-06-19 12:57:46,209 Trac[filters] DEBUG: Checking *_VIEW permission on event for resource ticket:88 2013-06-19 12:57:46,210 Trac[api] DEBUG: AnnouncementSystem has found the following subscriptions: [user1(authenticated) via email], user2(authenticated) via email], [somebody(authenticated) via email] 2013-06-19 12:57:46,210 Trac[mail] DEBUG: EmailDistributor has found the following formats capable of handling 'email' of 'ticket': text/html, text/plain 2013-06-19 12:57:46,212 Trac[mail] DEBUG: EmailDistributor was unable to find an address for: somebody (authenticated) 2013-06-19 12:57:46,213 Trac[mail] DEBUG: EmailDistributor found the address 'user1@domain.com' for 'user1 (authenticated)' via: SessionEmailResolver 2013-06-19 12:57:46,213 Trac[mail] DEBUG: EmailDistributor expected local delivery for user1 to: user1@domain.com 2013-06-19 12:57:46,214 Trac[mail] DEBUG: EmailDistributor found the address 'user2@domain.com' for 'user2 (authenticated)' via: SessionEmailResolver 2013-06-19 12:57:46,214 Trac[mail] DEBUG: EmailDistributor expected local delivery for user2 to: user2@domain.com 2013-06-19 12:57:46,214 Trac[mail] DEBUG: EmailDistributor is sending event as 'text/html' to: user2@domain.com, user1@domain.com 2013-06-19 12:57:46,214 Trac[mail] DEBUG: All email recipients: [u'user2@domain.com', u'user1@domain.com'] 2013-06-19 12:57:46,254 Trac[email_decorators] DEBUG: StaticEmailDecorator added 'user3@domain.com' because of rule: email_always_cc 2013-06-19 12:57:46,257 Trac[api] ERROR: AnnouncementSystem failed. Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/TracAnnouncer-1.0dev-py2.7.egg/announcer/api.py", line 584, in _real_send evt) File "/usr/local/lib/python2.7/dist-packages/TracAnnouncer-1.0dev-py2.7.egg/announcer/distributors/mail.py", line 330, in distribute self._do_send(transport, event, k, v, fmtdict[k]) File "/usr/local/lib/python2.7/dist-packages/TracAnnouncer-1.0dev-py2.7.egg/announcer/distributors/mail.py", line 501, in _do_send package = (from_header, recip_adds, rootMessage.as_string()) File "/usr/lib/python2.7/email/message.py", line 137, in as_string g.flatten(self, unixfrom=unixfrom) File "/usr/lib/python2.7/email/generator.py", line 83, in flatten self._write(msg) File "/usr/lib/python2.7/email/generator.py", line 115, in _write self._write_headers(msg) File "/usr/lib/python2.7/email/generator.py", line 148, in _write_headers print >> self._fp, v.encode() File "/usr/lib/python2.7/email/header.py", line 407, in encode newchunks += self._split(s, charset, targetlen, splitchars) File "/usr/lib/python2.7/email/header.py", line 292, in _split elen = charset.encoded_header_len(encoded) File "/usr/lib/python2.7/email/charset.py", line 345, in encoded_header_len return len(s) TypeError: object of type 'int' has no len() 2013-06-19 12:57:46,259 Trac[api] DEBUG: AnnouncementSystem sent event in 0.06 seconds.
The issue appears to be that message.py cannot convert the message object to a string representation.
Is this an issue with AnnouncerPlugin?
Thanks Andy
Attachments (0)
Change History (4)
comment:1 Changed 11 years ago by
comment:2 Changed 11 years ago by
Replying to andyhodgsononline@…: ...
Is this an issue with AnnouncerPlugin?
Hm, aren't you already asserting this by creating a 'defect' ticket here? Honestly, as long as you're unsure, better discuss on our mailing-list first.
comment:3 Changed 8 years ago by
Owner: | Steffen Hoffmann deleted |
---|
comment:4 Changed 8 years ago by
Resolution: | → wontfix |
---|---|
Status: | new → closed |
Please upgrade to Trac 1.2, which has integrated the core of AnnouncerPlugin. Please raise the issue on the trac:MailingList if you encounter the issue with Trac 1.2.
Replying to andyhodgsononline@…: ...
Precisely a part of the headers, yes.
The plugin might pass some integer value that should be string. OTOH, the MIMEMultipart object from
email.MIMEMultipart
must have accepted that offending value before (), so I'd rather tend towards assuming it is a bit lame in sanitizing input, handling processing errors, or both.Still we might improve within plugin's code, i.e. altering 'set_header()' from
announcer.util.mail
, that in turn uses Header fromemail.header
. Honestly, I'm not an expert in email constructing by now, but at first glance the way this plugin works doesn't look wrong. Quite the contrary, as relying on Python core functionality should rather ensure better code performance.