mirror of
				https://github.com/laurivosandi/certidude
				synced 2025-10-31 01:19:11 +00:00 
			
		
		
		
	mailer: Better utf-8 handling
This commit is contained in:
		| @@ -8,6 +8,7 @@ from jinja2 import Environment, PackageLoader | ||||
| from email.mime.multipart import MIMEMultipart | ||||
| from email.mime.text import MIMEText | ||||
| from email.mime.base import MIMEBase | ||||
| from email.header import Header | ||||
| from urllib.parse import urlparse | ||||
|  | ||||
| env = Environment(loader=PackageLoader("certidude", "templates/mail")) | ||||
| @@ -30,9 +31,18 @@ def send(template, to=None, secondary=None, include_admins=True, attachments=(), | ||||
|     html = markdown(text) | ||||
|  | ||||
|     msg = MIMEMultipart("alternative") | ||||
|     msg["Subject"] = subject | ||||
|     msg["From"] = "%s <%s>" % (config.MAILER_NAME, config.MAILER_ADDRESS) | ||||
|     msg["To"] = ", ".join([str(j) for j in recipients]) | ||||
|     msg["Subject"] = Header(subject) | ||||
|     msg["From"] = Header(config.MAILER_NAME) | ||||
|     msg["From"].append("<%s>" % config.MAILER_ADDRESS) | ||||
|  | ||||
|     msg["To"] = Header() | ||||
|     for user in recipients: | ||||
|         if isinstance(user, User): | ||||
|             full_name, user = user.format() | ||||
|             if full_name: | ||||
|                 msg["To"].append(full_name) | ||||
|         msg["To"].append(user) | ||||
|         msg["To"].append(", ") | ||||
|  | ||||
|     part1 = MIMEText(text, "plain", "utf-8") | ||||
|     part2 = MIMEText(html, "html", "utf-8") | ||||
| @@ -49,4 +59,4 @@ def send(template, to=None, secondary=None, include_admins=True, attachments=(), | ||||
|     if config.MAILER_ADDRESS: | ||||
|         click.echo("Sending to: %s" % msg["to"]) | ||||
|         conn = smtplib.SMTP("localhost") | ||||
|         conn.sendmail(config.MAILER_ADDRESS, [str(u) for u in recipients], msg.as_string()) | ||||
|         conn.sendmail(config.MAILER_ADDRESS, [u.mail if isinstance(u, User) else u for u in recipients], msg.as_string()) | ||||
|   | ||||
| @@ -12,11 +12,14 @@ class User(object): | ||||
|         self.given_name = given_name | ||||
|         self.surname = surname | ||||
|  | ||||
|     def __repr__(self): | ||||
|         if self.given_name and self.surname: | ||||
|             return "%s %s <%s>" % (self.given_name, self.surname, self.mail) | ||||
|     def format(self): | ||||
|         if self.given_name or self.surname: | ||||
|             return " ".join([j for j in [self.given_name, self.surname] if j]), "<%s>" % self.mail | ||||
|         else: | ||||
|             return self.mail | ||||
|             return None, self.mail | ||||
|  | ||||
|     def __repr__(self): | ||||
|         return " ".join([j for j in self.format() if j]) | ||||
|  | ||||
|     def __hash__(self): | ||||
|         return hash(self.mail) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user