| 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 |