From 5b58cddff599f15403f8ef7aecf42ef648282917 Mon Sep 17 00:00:00 2001 From: Robert Kaye Date: Tue, 11 Jul 2023 15:26:07 +0200 Subject: [PATCH] Use brainzutils, not the internal mail.py --- metabrainz/invoices/send_invoices.py | 2 +- metabrainz/mail.py | 59 ---------------------------- metabrainz/model/access_log.py | 2 +- metabrainz/model/supporter.py | 2 +- metabrainz/payments/receipts.py | 2 +- metabrainz/supporter/views.py | 2 +- 6 files changed, 5 insertions(+), 64 deletions(-) delete mode 100644 metabrainz/mail.py diff --git a/metabrainz/invoices/send_invoices.py b/metabrainz/invoices/send_invoices.py index acbdbdab..6ccb3f50 100755 --- a/metabrainz/invoices/send_invoices.py +++ b/metabrainz/invoices/send_invoices.py @@ -14,7 +14,7 @@ from quickbooks import exceptions from brainzutils import cache -from metabrainz.mail import send_mail +from brainzutils.mail import send_mail SEND_DELAY = 5 MAIL_BODY = """To: %s %s (%s) diff --git a/metabrainz/mail.py b/metabrainz/mail.py deleted file mode 100644 index 3d19fad8..00000000 --- a/metabrainz/mail.py +++ /dev/null @@ -1,59 +0,0 @@ -# -*- coding: utf-8 -*- -"""This module provides a way to send emails.""" -from email.mime.application import MIMEApplication -from email.mime.multipart import MIMEMultipart -from email.mime.text import MIMEText -from flask import current_app -import logging -import smtplib -import socket - - -def send_mail(subject, text, recipients, attachments=None, - from_name="MetaBrainz Notifications", - from_addr=None): - """This function can be used as a foundation for sending email. - - Args: - subject: Subject of the message. - text: The message itself. - recipients: List of recipients. - attachments: List of (file object, subtype, name) tuples. For example: - (, 'pdf', 'receipt.pdf'). - from_name: Name of the sender. - from_addr: Email address of the sender. - """ - if attachments is None: - attachments = [] - if from_addr is None: - from_addr = 'noreply@' + current_app.config['MAIL_FROM_DOMAIN'] - - if current_app.config['TESTING']: # Not sending any emails during the testing process - return - - if not recipients: - return - - message = MIMEMultipart('mixed') - message['Subject'] = subject - message['From'] = "%s <%s>" % (from_name, from_addr) - message.attach(MIMEText(text, _charset='utf-8')) - - for attachment in attachments: - file_obj, subtype, name = attachment - attachment = MIMEApplication(file_obj.read(), _subtype=subtype) - file_obj.close() # FIXME(roman): This feels kind of hacky. Maybe there's a better way? - attachment.add_header('content-disposition', 'attachment', filename=name) - message.attach(attachment) - - try: - smtp_server = smtplib.SMTP(current_app.config['SMTP_SERVER'], current_app.config['SMTP_PORT']) - except (socket.error, smtplib.SMTPException) as e: - logging.warning(e) - raise MailException(e) - smtp_server.sendmail(from_addr, recipients, message.as_string()) - smtp_server.quit() - - -class MailException(Exception): - pass diff --git a/metabrainz/model/access_log.py b/metabrainz/model/access_log.py index ccad9e56..4ca2790f 100644 --- a/metabrainz/model/access_log.py +++ b/metabrainz/model/access_log.py @@ -1,7 +1,7 @@ from metabrainz.model import db from metabrainz.model.token import Token from metabrainz.model.supporter import Supporter -from metabrainz.mail import send_mail +from brainzutils.mail import send_mail from brainzutils import cache from sqlalchemy import func, text from sqlalchemy.dialects import postgresql diff --git a/metabrainz/model/supporter.py b/metabrainz/model/supporter.py index 182e51ed..bab26df8 100644 --- a/metabrainz/model/supporter.py +++ b/metabrainz/model/supporter.py @@ -1,5 +1,5 @@ from metabrainz.model import db -from metabrainz.mail import send_mail +from brainzutils.mail import send_mail from metabrainz.model.token import Token from metabrainz.admin import AdminModelView from sqlalchemy.sql.expression import func, or_ diff --git a/metabrainz/payments/receipts.py b/metabrainz/payments/receipts.py index a90a5b07..990288a4 100644 --- a/metabrainz/payments/receipts.py +++ b/metabrainz/payments/receipts.py @@ -7,7 +7,7 @@ from reportlab.lib.styles import ParagraphStyle from reportlab.platypus import Paragraph from reportlab.lib.enums import TA_LEFT, TA_RIGHT, TA_CENTER -from metabrainz.mail import send_mail +from brainzutils.mail import send_mail from flask import current_app import tempfile diff --git a/metabrainz/supporter/views.py b/metabrainz/supporter/views.py index ea4f610f..284999db 100644 --- a/metabrainz/supporter/views.py +++ b/metabrainz/supporter/views.py @@ -6,7 +6,7 @@ from werkzeug.exceptions import NotFound, InternalServerError, BadRequest from metabrainz import flash, session -from metabrainz.mail import send_mail, MailException +from brainzutils.mail import send_mail, MailException from metabrainz.model import Dataset from metabrainz.model.supporter import Supporter, InactiveSupporterException from metabrainz.model.tier import Tier