mirror of
https://github.com/postgres/pgweb.git
synced 2025-08-06 09:57:57 +00:00

Basically, user generated email (bug report form) will be sent to the mail frontends for antispam. Any errors generated there will be ignored and the mails "dropped on the floor". Other emails keep entering the system through localhost and delivered there.
38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
from email.mime.text import MIMEText
|
|
from email.mime.multipart import MIMEMultipart
|
|
from email.mime.nonmultipart import MIMENonMultipart
|
|
from email.Utils import formatdate
|
|
from email import encoders
|
|
|
|
from models import QueuedMail
|
|
|
|
def send_simple_mail(sender, receiver, subject, msgtxt, attachments=None, usergenerated=False):
|
|
# attachment format, each is a tuple of (name, mimetype,contents)
|
|
# content should be *binary* and not base64 encoded, since we need to
|
|
# use the base64 routines from the email library to get a properly
|
|
# formatted output message
|
|
msg = MIMEMultipart()
|
|
msg['Subject'] = subject
|
|
msg['To'] = receiver
|
|
msg['From'] = sender
|
|
msg['Date'] = formatdate(localtime=True)
|
|
|
|
msg.attach(MIMEText(msgtxt, _charset='utf-8'))
|
|
|
|
if attachments:
|
|
for filename, contenttype, content in attachments:
|
|
main,sub = contenttype.split('/')
|
|
part = MIMENonMultipart(main,sub)
|
|
part.set_payload(content)
|
|
part.add_header('Content-Disposition', 'attachment; filename="%s"' % filename)
|
|
encoders.encode_base64(part)
|
|
msg.attach(part)
|
|
|
|
|
|
# Just write it to the queue, so it will be transactionally rolled back
|
|
QueuedMail(sender=sender, receiver=receiver, fullmsg=msg.as_string(), usergenerated=usergenerated).save()
|
|
|
|
def send_mail(sender, receiver, fullmsg, usergenerated=False):
|
|
# Send an email, prepared as the full MIME encoded mail already
|
|
QueuedMail(sender=sender, receiver=receiver, fullmsg=fullmsg, usergenerated=False).save()
|