| 10 |  | == Receiving Notification Mails == | 
                        | 11 |  | When reporting a new ticket or adding a comment, enter a valid email address in the ''reporter'', ''assigned to/owner'' or ''cc'' field. Trac will automatically send you an email when changes are made to the ticket (depending on how notification is configured). | 
                        | 12 |  |  | 
                        | 13 |  | This is useful to keep up-to-date on an issue or enhancement request that interests you. | 
                        | 14 |  |  | 
                        | 15 |  | == Configuring SMTP Notification == | 
                        | 16 |  |  | 
                        | 17 |  | === Configuration Options === | 
                        | 18 |  | These are the available options for the ''[notification]'' section in trac.ini. | 
                        | 19 |  | * '''smtp_enabled''': Enable email notification. | 
                        | 20 |  | * '''smtp_server''': SMTP server used for notification messages. | 
                        | 21 |  | * '''smtp_port''': (''since 0.9'') Port used to contact the SMTP server. | 
                        | 22 |  | * '''smtp_user''': (''since 0.9'') User name for authentication SMTP account. | 
                        | 23 |  | * '''smtp_password''': (''since 0.9'') Password for authentication SMTP account. | 
                        | 24 |  | * '''smtp_from''': Email address to use for ''Sender''-headers in notification emails. | 
                        | 25 |  | * '''smtp_from_name''': Sender name to use for ''Sender''-headers in notification emails. | 
                        | 26 |  | * '''smtp_replyto''': Email address to use for ''Reply-To''-headers in notification emails. | 
                        | 27 |  | * '''smtp_default_domain''': (''since 0.10'') Append the specified domain to addresses that do not contain one. Fully qualified addresses are not modified. The default domain is appended to all username/login for which an email address cannot be found from the user settings. | 
                        | 28 |  | * '''smtp_always_cc''': List of email addresses to always send notifications to. ''Typically used to post ticket changes to a dedicated mailing list.'' | 
                        | 29 |  | * '''smtp_always_bcc''': (''since 0.10'') List of email addresses to always send notifications to, but keeps addresses not visible from other recipients of the notification email | 
                        | 30 |  | * '''smtp_subject_prefix''': (''since 0.10.1'') Text that is inserted before the subject of the email. Set to "!__default!__" by default. | 
                        | 31 |  | * '''always_notify_reporter''':  Always send notifications to any address in the reporter field (default: false). | 
                        | 32 |  | * '''always_notify_owner''': (''since 0.9'') Always send notifications to the address in the owner field (default: false). | 
                        | 33 |  | * '''always_notify_updater''': (''since 0.10'') Always send a notification to the updater of a ticket (default: true). | 
                        | 34 |  | * '''use_public_cc''': (''since 0.10'') Addresses in To: (owner, reporter) and Cc: lists are visible by all recipients (default is ''Bcc:'' - hidden copy). | 
                        | 35 |  | * '''use_short_addr''': (''since 0.10'') Enable delivery of notifications to addresses that do not contain a domain (i.e. do not end with ''@<domain.com>'').This option is useful for intranets, where the SMTP server can handle local addresses and map the username/login to a local mailbox. See also `smtp_default_domain`. Do not use this option with a public SMTP server. | 
                        | 36 |  | * '''use_tls''': (''since 0.10'') Toggle to send notifications via a SMTP server using [http://en.wikipedia.org/wiki/Transport_Layer_Security TLS], such as GMail. | 
                        | 37 |  | * '''mime_encoding''': (''since 0.10'') E-mail notifications are always sent in 7-bit mode. This option allows to select the MIME encoding scheme. Supported values: | 
                        | 38 |  | * `base64`: default value, works with any kind of content. May cause some issues with touchy anti-spam/anti-virus engines. | 
                        | 39 |  | * `qp` or `quoted-printable`: best for european languages (more compact than base64), not recommended for non-ASCII text (less compact than base64) | 
                        | 40 |  | * `none`: no encoding. Use with plain english only (ASCII). E-mails with non-ASCII chars won't be delivered. | 
                        | 41 |  |  | 
                        | 42 |  | Either '''smtp_from''' or '''smtp_replyto''' (or both) ''must'' be set, otherwise Trac refuses to send notification mails. | 
                        | 43 |  |  | 
                        | 44 |  | === Example Configuration === | 
                        | 45 |  |  | 
                        | 46 |  | {{{ | 
                      
                        |  | 10 | == Receiving Notification Mails | 
                        |  | 11 | When reporting a new ticket or adding a comment, enter a valid email address or your Trac username in the ''reporter'', ''assigned to/owner'' or ''cc'' field. Trac will automatically send you an email when changes are made to the ticket, depending on how notification is configured. | 
                        |  | 12 |  | 
                        |  | 13 | === How to use your username to receive notification mails | 
                        |  | 14 |  | 
                        |  | 15 | To receive notification mails, you can either enter a full email address or your Trac username. To get notified with a simple username or login, you need to specify a valid email address in the ''Preferences'' page. | 
                        |  | 16 |  | 
                        |  | 17 | Alternatively, a default domain name ('''`smtp_default_domain`''') can be set in the TracIni file, see [#ConfigurationOptions Configuration Options] below. In this case, the default domain will be appended to the username, which can be useful for an "Intranet" kind of installation. | 
                        |  | 18 |  | 
                        |  | 19 | When using apache and mod_kerb for authentication against Kerberos / Active Directory, usernames take the form ('''`username@EXAMPLE.LOCAL`'''). To avoid this being interpreted as an email address, add the Kerberos domain to  ('''`ignore_domains`'''). | 
                        |  | 20 |  | 
                        |  | 21 | === Ticket attachment notifications | 
                        |  | 22 |  | 
                        |  | 23 | Since 1.0.3 Trac will send notifications when a ticket attachment is added or deleted. Usually attachment notifications will be enabled in an environment by default. To disable the attachment notifications for an environment the `TicketAttachmentNotifier` component must be disabled: | 
                        |  | 24 | {{{#!ini | 
                        |  | 25 | [components] | 
                        |  | 26 | trac.ticket.notification.TicketAttachmentNotifier = disabled | 
                        |  | 27 | }}} | 
                        |  | 28 |  | 
                        |  | 29 | == Configuring SMTP Notification | 
                        |  | 30 |  | 
                        |  | 31 | '''Important:''' For TracNotification to work correctly, the `[trac] base_url` option must be set in [wiki:TracIni trac.ini]. | 
                        |  | 32 |  | 
                        |  | 33 | === Configuration Options | 
                        |  | 34 | These are the available options for the `[notification]` section in trac.ini: | 
                        |  | 35 |  | 
                        |  | 36 | [[TracIni(notification)]] | 
                        |  | 37 |  | 
                        |  | 38 | === Example Configuration (SMTP) | 
                        |  | 39 | {{{#!ini | 
            
                      
                        | 55 |  | == Sample Email == | 
                      
                        |  | 48 | === Example Configuration (`sendmail`) | 
                        |  | 49 | {{{#!ini | 
                        |  | 50 | [notification] | 
                        |  | 51 | smtp_enabled = true | 
                        |  | 52 | email_sender = SendmailEmailSender | 
                        |  | 53 | sendmail_path = /usr/sbin/sendmail | 
                        |  | 54 | smtp_from = notifier@example.com | 
                        |  | 55 | smtp_replyto = myproj@projects.example.com | 
                        |  | 56 | smtp_always_cc = ticketmaster@example.com, theboss+myproj@example.com | 
                        |  | 57 | }}} | 
                        |  | 58 |  | 
                        |  | 59 | === Subscriber Configuration | 
                        |  | 60 | The default subscriptions are configured in the `[notification-subscriber]` section in trac.ini: | 
                        |  | 61 |  | 
                        |  | 62 | [[TracIni(notification-subscriber)]] | 
                        |  | 63 |  | 
                        |  | 64 | Each user can override these defaults in his ''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 | === Customizing the e-mail subject | 
                        |  | 69 | 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: | 
                        |  | 70 | {{{#!genshi | 
                        |  | 71 | $prefix #$ticket.id: $summary | 
                        |  | 72 | }}} | 
                        |  | 73 | The following variables are available in the template: | 
                        |  | 74 |  | 
                        |  | 75 | * `env`: The project environment (see [trac:source:/trunk/trac/env.py env.py]). | 
                        |  | 76 | * `prefix`: The prefix defined in `smtp_subject_prefix`. | 
                        |  | 77 | * `summary`: The ticket summary, with the old value if the summary was edited. | 
                        |  | 78 | * `ticket`: The ticket model object (see [trac:source:/trunk/trac/ticket/model.py model.py]). Individual ticket fields can be addressed by appending the field name separated by a dot, eg `$ticket.milestone`. | 
                        |  | 79 |  | 
                        |  | 80 | === Customizing the e-mail content | 
                        |  | 81 |  | 
                        |  | 82 | The notification e-mail content is generated based on `ticket_notify_email.txt` in `trac/ticket/templates`. You can add your own version of this template by adding a `ticket_notify_email.txt` to the templates directory of your environment. The default looks like this: | 
                        |  | 83 |  | 
                        |  | 84 | {{{#!genshi | 
                        |  | 85 | $ticket_body_hdr | 
                        |  | 86 | $ticket_props | 
                        |  | 87 | {% choose ticket.new %}\ | 
                        |  | 88 | {%   when True %}\ | 
                        |  | 89 | $ticket.description | 
                        |  | 90 | {%   end %}\ | 
                        |  | 91 | {%   otherwise %}\ | 
                        |  | 92 | {%     if changes_body %}\ | 
                        |  | 93 | ${_('Changes (by %(author)s):', author=change.author)} | 
                        |  | 94 |  | 
                        |  | 95 | $changes_body | 
                        |  | 96 | {%     end %}\ | 
                        |  | 97 | {%     if changes_descr %}\ | 
                        |  | 98 | {%       if not changes_body and not change.comment and change.author %}\ | 
                        |  | 99 | ${_('Description changed by %(author)s:', author=change.author)} | 
                        |  | 100 | {%       end %}\ | 
                        |  | 101 | $changes_descr | 
                        |  | 102 | -- | 
                        |  | 103 | {%     end %}\ | 
                        |  | 104 | {%     if change.comment %}\ | 
                        |  | 105 |  | 
                        |  | 106 | ${changes_body and _('Comment:') or _('Comment (by %(author)s):', author=change.author)} | 
                        |  | 107 |  | 
                        |  | 108 | $change.comment | 
                        |  | 109 | {%     end %}\ | 
                        |  | 110 | {%   end %}\ | 
                        |  | 111 | {% end %}\ | 
                        |  | 112 |  | 
                        |  | 113 | -- | 
                        |  | 114 | ${_('Ticket URL: <%(link)s>', link=ticket.link)} | 
                        |  | 115 | $project.name <${project.url or abs_href()}> | 
                        |  | 116 | $project.descr | 
                        |  | 117 | }}} | 
                        |  | 118 |  | 
                        |  | 119 | == Sample Email | 
            
                      
                        | 81 |  | == Using GMail as the SMTP relay host == | 
                        | 82 |  |  | 
                        | 83 |  | Use the following configuration snippet | 
                        | 84 |  | {{{ | 
                      
                        |  | 145 | == Customizing e-mail content for MS Outlook | 
                        |  | 146 |  | 
                        |  | 147 | 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]. | 
                        |  | 148 |  | 
                        |  | 149 | Replace the following second row in the template: | 
                        |  | 150 | {{{ | 
                        |  | 151 | $ticket_props | 
                        |  | 152 | }}} | 
                        |  | 153 |  | 
                        |  | 154 | with this (requires Python 2.6 or later): | 
                        |  | 155 | {{{ | 
                        |  | 156 | -------------------------------------------------------------------------- | 
                        |  | 157 | {% with | 
                        |  | 158 | pv = [(a[0].strip(), a[1].strip()) for a in [b.split(':') for b in | 
                        |  | 159 | [c.strip() for c in | 
                        |  | 160 | ticket_props.replace('|', '\n').splitlines()[1:-1]] if ':' in b]]; | 
                        |  | 161 | sel = ['Reporter', 'Owner', 'Type', 'Status', 'Priority', 'Milestone', | 
                        |  | 162 | 'Component', 'Severity', 'Resolution', 'Keywords'] %}\ | 
                        |  | 163 | ${'\n'.join('%s\t%s' % (format(p[0]+':', ' <12'), p[1]) for p in pv if p[0] in sel)} | 
                        |  | 164 | {% end %}\ | 
                        |  | 165 | -------------------------------------------------------------------------- | 
                        |  | 166 | }}} | 
                        |  | 167 |  | 
                        |  | 168 | 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. | 
                        |  | 169 | {{{#!div style="margin: 1em 1.75em; border:1px dotted" | 
                        |  | 170 | {{{#!html | 
                        |  | 171 | #42: testing<br /> | 
                        |  | 172 | --------------------------------------------------------------------------<br /> | 
                        |  | 173 | <table cellpadding=0> | 
                        |  | 174 | <tr><td>Reporter:</td><td>jonas@example.com</td></tr> | 
                        |  | 175 | <tr><td>Owner:</td><td>anonymous</td></tr> | 
                        |  | 176 | <tr><td>Type:</td><td>defect</td></tr> | 
                        |  | 177 | <tr><td>Status:</td><td>assigned</td></tr> | 
                        |  | 178 | <tr><td>Priority:</td><td>lowest</td></tr> | 
                        |  | 179 | <tr><td>Milestone:</td><td>0.9</td></tr> | 
                        |  | 180 | <tr><td>Component:</td><td>report system</td></tr> | 
                        |  | 181 | <tr><td>Severity:</td><td>major</td></tr> | 
                        |  | 182 | <tr><td>Resolution:</td><td> </td></tr> | 
                        |  | 183 | <tr><td>Keywords:</td><td> </td></tr> | 
                        |  | 184 | </table> | 
                        |  | 185 | --------------------------------------------------------------------------<br /> | 
                        |  | 186 | Changes:<br /> | 
                        |  | 187 | <br /> | 
                        |  | 188 |   * component:  changeset view => search system<br /> | 
                        |  | 189 |   * priority:  low => highest<br /> | 
                        |  | 190 |   * owner:  jonas => anonymous<br /> | 
                        |  | 191 |   * cc:  daniel@example.com =><br /> | 
                        |  | 192 |           daniel@example.com, jonas@example.com<br /> | 
                        |  | 193 |   * status:  new => assigned<br /> | 
                        |  | 194 | <br /> | 
                        |  | 195 | Comment:<br /> | 
                        |  | 196 | I'm interested too!<br /> | 
                        |  | 197 | <br /> | 
                        |  | 198 | --<br /> | 
                        |  | 199 | Ticket URL: <http://example.com/trac/ticket/42><br /> | 
                        |  | 200 | My Project <http://myproj.example.com/><br /> | 
                        |  | 201 | }}} | 
                        |  | 202 | }}} | 
                        |  | 203 |  | 
                        |  | 204 | **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: | 
                        |  | 205 | {{{ | 
                        |  | 206 | sel = ['Reporter', ..., 'Keywords', 'Custom1', 'Custom2'] | 
                        |  | 207 | }}} | 
                        |  | 208 |  | 
                        |  | 209 | However, the solution is still a workaround to an automatically HTML-formatted e-mail. | 
                        |  | 210 |  | 
                        |  | 211 | == Using GMail as the SMTP relay host | 
                        |  | 212 |  | 
                        |  | 213 | Use the following configuration snippet: | 
                        |  | 214 | {{{#!ini |