| 130 | | msg['X-Trac-Project'] = projname |
| 131 | | msg['X-URL'] = self.config.get('project','url') |
| 132 | | msg['Subject'] = Header(self.subject, 'utf-8') |
| 133 | | msg['From'] = '%s <%s>' % (projname, self.from_email) |
| 134 | | msg['Sender'] = self.from_email |
| 135 | | msg['Reply-To'] = self.replyto_email |
| 136 | | msg['To'] = rcpt |
| 137 | | msg['Date'] = formatdate() |
| | 130 | |
| | 131 | headers = {} |
| | 132 | headers['X-Mailer'] = 'Trac %s, by Edgewall Software' % __version__ |
| | 133 | headers['X-Trac-Version'] = __version__ |
| | 134 | headers['X-Trac-Project'] = projname |
| | 135 | headers['X-URL'] = self.config.get('project','url') |
| | 136 | headers['Subject'] = self.subject |
| | 137 | headers['From'] = formataddr((projname, self.from_email)) |
| | 138 | headers['Sender'] = self.from_email |
| | 139 | headers['Reply-To'] = self.replyto_email |
| | 140 | headers['To'] = rcpt |
| | 141 | headers['Date'] = formatdate() |
| 139 | | msg[hdr] = mime_headers[hdr] |
| | 143 | headers[hdr] = mime_headers[hdr] |
| | 144 | |
| | 145 | charset = Charset() |
| | 146 | charset.header_encoding = BASE64 |
| | 147 | charset.body_encoding = BASE64 |
| | 148 | charset.input_charset = 'utf-8' |
| | 149 | charset.output_charset = 'utf-8' |
| | 150 | charset.input_codec = 'utf-8' |
| | 151 | charset.output_codec = 'utf-8' |
| | 152 | |
| | 153 | msgtext = Message() |
| | 154 | msgtext.set_charset(charset) |
| | 155 | msgtext.set_payload(body) |
| | 156 | |
| | 157 | msg = MIMEMultipart(_subtype='mixed') |
| | 158 | for k in headers.keys(): |
| | 159 | try: |
| | 160 | ascii = unicode(headers[k], 'ascii') |
| | 161 | msg[k] = ascii |
| | 162 | except UnicodeDecodeError: |
| | 163 | msg[k] = Header(headers[k], charset) |
| | 164 | msg.attach(msgtext) |
| | 165 | |