diff --git a/pgweb/mailqueue/util.py b/pgweb/mailqueue/util.py index 026a50f5..9f09e728 100644 --- a/pgweb/mailqueue/util.py +++ b/pgweb/mailqueue/util.py @@ -13,7 +13,7 @@ def _encoded_email_header(name, email): return formataddr((str(Header(name, 'utf-8')), email)) return email -def send_simple_mail(sender, receiver, subject, msgtxt, attachments=None, usergenerated=False, cc=None, replyto=None, sendername=None, receivername=None): +def send_simple_mail(sender, receiver, subject, msgtxt, attachments=None, usergenerated=False, cc=None, replyto=None, sendername=None, receivername=None, messageid=None): # 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 @@ -27,7 +27,10 @@ def send_simple_mail(sender, receiver, subject, msgtxt, attachments=None, userge if replyto: msg['Reply-To'] = replyto msg['Date'] = formatdate(localtime=True) - msg['Message-ID'] = make_msgid() + if messageid: + msg['Message-ID'] = messageid + else: + msg['Message-ID'] = make_msgid() msg.attach(MIMEText(msgtxt, _charset='utf-8')) diff --git a/pgweb/misc/views.py b/pgweb/misc/views.py index e299d0c2..72acacb3 100644 --- a/pgweb/misc/views.py +++ b/pgweb/misc/views.py @@ -4,6 +4,8 @@ from django.db import connection from django.conf import settings import os +import time +import hashlib from pgweb.util.contexts import render_pgweb from pgweb.util.helpers import template_to_string @@ -13,6 +15,12 @@ from pgweb.core.models import Version from forms import SubmitBugForm +def _make_bugs_messageid(bugid): + return "{0}-{1}@postgresql.org".format( + bugid, + hashlib.md5("{0}-{1}".format(os.getpid(), time.time())).hexdigest()[:16], + ) + @login_required def submitbug(request): if request.method == 'POST': @@ -35,6 +43,7 @@ def submitbug(request): cc=form.cleaned_data['email'], replyto='%s, %s' % (form.cleaned_data['email'], settings.BUGREPORT_EMAIL), sendername="PG Bug reporting form", + messageid=_make_bugs_messageid(bugid), ) return render_pgweb(request, 'support', 'misc/bug_completed.html', { diff --git a/pgweb/util/misc.py b/pgweb/util/misc.py index 20bf822e..80aae44f 100644 --- a/pgweb/util/misc.py +++ b/pgweb/util/misc.py @@ -8,7 +8,7 @@ from pgweb.mailqueue.util import send_simple_mail from pgweb.util.helpers import template_to_string import re -def send_template_mail(sender, receiver, subject, templatename, templateattr={}, usergenerated=False, cc=None, replyto=None, receivername=None, sendername=None): +def send_template_mail(sender, receiver, subject, templatename, templateattr={}, usergenerated=False, cc=None, replyto=None, receivername=None, sendername=None, messageid=None): d = { 'link_root': settings.SITE_ROOT, } @@ -16,7 +16,8 @@ def send_template_mail(sender, receiver, subject, templatename, templateattr={}, send_simple_mail(sender, receiver, subject, template_to_string(templatename, d), usergenerated=usergenerated, cc=cc, replyto=replyto, - receivername=receivername, sendername=sendername) + receivername=receivername, sendername=sendername, + messageid=messageid) def get_client_ip(request): """