| 59 | | === Customizing the e-mail subject === |
| 60 | | The e-mail subject can be customized with the `ticket_subject_template` option, which contains a [http://genshi.edgewall.org/wiki/Documentation/text-templates.html Genshi text template] snippet. The default value is: |
| 61 | | {{{ |
| 62 | | $prefix #$ticket.id: $summary |
| | 59 | === Subscriber Configuration |
| | 60 | The default subscriptions are configured in the [TracIni#notification-subscriber-section "[notification-subscriber]"] section. |
| | 61 | |
| | 62 | [[TracIni(section=notification-subscriber)]] |
| | 63 | |
| | 64 | Each user can override these defaults in their ''Notifications'' preferences. |
| | 65 | |
| | 66 | For example to unsubscribe from notifications for one's own changes and comments, the rule "Never notify: I update a ticket" should be added above other subscription rules. |
| | 67 | |
| | 68 | The subscription rule name on the left side of the `=` can be anything, it has no meaning outside this configuration file. The subscriber name on the right side of the `=` must be one of the subscribers listed in the above table. |
| | 69 | |
| | 70 | The following attributes of default subscriptions can be configured: |
| | 71 | * `.distributor` (Default: `email`) |
| | 72 | * Other values require plugins. For example `on-site` requires th:OnSiteNotificationsPlugin. |
| | 73 | * `.priority` (Default: `100`) |
| | 74 | * Smaller values override larger values. |
| | 75 | * If you use `0`, then users will not be able to override this rule. |
| | 76 | * `.adverb` (Default: `always`) |
| | 77 | * `never` can be used to silence other subscription rules with higher values. |
| | 78 | * `.format` (Default: `text/plain`) |
| | 79 | * Other values require plugins. For example `text/html` requires th:TracHtmlNotificationPlugin. |
| | 80 | |
| | 81 | === Example Configuration (default subscriptions) |
| | 82 | {{{#!ini |
| | 83 | [notification-subscriber] |
| | 84 | always_notify_owner = TicketOwnerSubscriber |
| | 85 | always_notify_owner.distributor = email |
| | 86 | always_notify_owner.priority = 100 |
| | 87 | always_notify_owner.adverb = always |
| | 88 | always_notify_owner.format = text/plain |
| | 89 | |
| | 90 | always_notify_previous_updater = TicketPreviousUpdatersSubscriber |
| | 91 | |
| | 92 | never_notify_updater = TicketUpdaterSubscriber |
| | 93 | never_notify_updater.adverb = never |
| | 94 | never_notify_updater.priority = 0 |
| | 95 | |
| | 96 | notify_cc_html = CarbonCopySubscriber |
| | 97 | notify_cc_html.format = text/html |
| | 98 | }}} |
| | 99 | |
| | 100 | === Customizing the email subject |
| | 101 | The email subject can be customized with the `ticket_subject_template` option, which contains a [https://genshi.edgewall.org/wiki/Documentation/text-templates.html Genshi text template] snippet. The default value is: |
| | 102 | {{{#!genshi |
| | 103 | ${prefix} #${ticket.id}: ${summary} |
| 136 | | == Customizing e-mail content for MS Outlook == |
| 137 | | |
| 138 | | MS Outlook normally presents plain text e-mails with a variable-width font, and as a result the ticket properties table will most certainly look like a mess in MS Outlook. This can be fixed with some customization of the [#Customizingthee-mailcontent e-mail template]. |
| 139 | | |
| 140 | | Replace the following second row in the template: |
| 141 | | {{{ |
| 142 | | $ticket_props |
| 143 | | }}} |
| 144 | | |
| 145 | | with this (requires Python 2.6 or later): |
| 146 | | {{{ |
| 147 | | -------------------------------------------------------------------------- |
| 148 | | {% with |
| 149 | | pv = [(a[0].strip(), a[1].strip()) for a in [b.split(':') for b in |
| 150 | | [c.strip() for c in |
| 151 | | ticket_props.replace('|', '\n').splitlines()[1:-1]] if ':' in b]]; |
| 152 | | sel = ['Reporter', 'Owner', 'Type', 'Status', 'Priority', 'Milestone', |
| 153 | | 'Component', 'Severity', 'Resolution', 'Keywords'] %}\ |
| 154 | | ${'\n'.join('%s\t%s' % (format(p[0]+':', ' <12'), p[1]) for p in pv if p[0] in sel)} |
| 155 | | {% end %}\ |
| 156 | | -------------------------------------------------------------------------- |
| 157 | | }}} |
| 158 | | |
| 159 | | The table of ticket properties is replaced with a list of a selection of the properties. A tab character separates the name and value in such a way that most people should find this more pleasing than the default table when using MS Outlook. |
| 160 | | {{{#!div style="margin: 1em 1.75em; border:1px dotted" |
| 161 | | {{{#!html |
| 162 | | #42: testing<br /> |
| 163 | | --------------------------------------------------------------------------<br /> |
| 164 | | <table cellpadding=0> |
| 165 | | <tr><td>Reporter:</td><td>jonas@example.com</td></tr> |
| 166 | | <tr><td>Owner:</td><td>anonymous</td></tr> |
| 167 | | <tr><td>Type:</td><td>defect</td></tr> |
| 168 | | <tr><td>Status:</td><td>assigned</td></tr> |
| 169 | | <tr><td>Priority:</td><td>lowest</td></tr> |
| 170 | | <tr><td>Milestone:</td><td>0.9</td></tr> |
| 171 | | <tr><td>Component:</td><td>report system</td></tr> |
| 172 | | <tr><td>Severity:</td><td>major</td></tr> |
| 173 | | <tr><td>Resolution:</td><td> </td></tr> |
| 174 | | <tr><td>Keywords:</td><td> </td></tr> |
| 175 | | </table> |
| 176 | | --------------------------------------------------------------------------<br /> |
| 177 | | Changes:<br /> |
| 178 | | <br /> |
| 179 | | * component: changeset view => search system<br /> |
| 180 | | * priority: low => highest<br /> |
| 181 | | * owner: jonas => anonymous<br /> |
| 182 | | * cc: daniel@example.com =><br /> |
| 183 | | daniel@example.com, jonas@example.com<br /> |
| 184 | | * status: new => assigned<br /> |
| 185 | | <br /> |
| 186 | | Comment:<br /> |
| 187 | | I'm interested too!<br /> |
| 188 | | <br /> |
| 189 | | --<br /> |
| 190 | | Ticket URL: <http://example.com/trac/ticket/42><br /> |
| 191 | | My Project <http://myproj.example.com/><br /> |
| 192 | | }}} |
| 193 | | }}} |
| 194 | | |
| 195 | | **Important**: Only those ticket fields that are listed in `sel` are part of the HTML mail. If you have defined custom ticket fields which are to be part of the mail, then they have to be added to `sel`. Example: |
| 196 | | {{{ |
| 197 | | sel = ['Reporter', ..., 'Keywords', 'Custom1', 'Custom2'] |
| 198 | | }}} |
| 199 | | |
| 200 | | However, the solution is still a workaround to an automatically HTML-formatted e-mail. |
| 201 | | |
| 202 | | == Using GMail as the SMTP relay host == |
| | 179 | == Using GMail as the SMTP relay host |
| 220 | | |
| 221 | | == Filtering notifications for one's own changes and comments == |
| 222 | | In Gmail, use the filter: |
| 223 | | {{{ |
| 224 | | from:(<smtp_from>) (("Reporter: <username>" -Changes -Comment) OR "Changes (by <username>)" OR "Comment (by <username>)") |
| 225 | | }}} |
| 226 | | |
| 227 | | to delete these notifications. |
| 228 | | |
| 229 | | In Thunderbird, there is no such solution if you use IMAP, see http://kb.mozillazine.org/Filters_(Thunderbird)#Filtering_the_message_body. |
| 230 | | |
| 231 | | You can also add this plugin: |
| 232 | | http://trac-hacks.org/wiki/NeverNotifyUpdaterPlugin, or vote for [trac:#2247] to be fixed. |
| 233 | | |
| 234 | | == Troubleshooting == |
| 235 | | |
| 236 | | If you cannot get the notification working, first make sure the log is activated and have a look at the log to find if an error message has been logged. See TracLogging for help about the log feature. |
| 237 | | |
| 238 | | Notification errors are not reported through the web interface, so the user who submits a change or a new ticket never gets notified about a notification failure. The Trac administrator needs to look at the log to find the error trace. |
| 239 | | |
| 240 | | === ''Permission denied'' error === |
| | 197 | |
| | 198 | == Troubleshooting |
| | 199 | |
| | 200 | If notifications are not working, inspect the [TracLogging log] for error messages. |
| | 201 | |
| | 202 | Notification errors are not always reported through the web interface, so the user who submits a change or creates a ticket may not get notified about a notification failure. The Trac administrator needs to look at the log to find the error message and traceback. |
| | 203 | |
| | 204 | === ''Permission denied'' error |