From df18ed8936f533b8b573a5f0610a5d796063182a Mon Sep 17 00:00:00 2001
From: Judit Foglszinger <urbec@debian.org>
Date: Tue, 9 Feb 2021 23:47:34 +0700
Subject: [PATCH] Adding explicit reply-to to several NM mails, adjust tests

---
 fprs/email.py             |  7 +++++--
 process/email.py          | 34 +++++++++++++++++++++++-----------
 process/tests/test_ops.py |  6 ++++--
 3 files changed, 32 insertions(+), 15 deletions(-)

diff --git a/fprs/email.py b/fprs/email.py
index 9fb04efd..32aa9f76 100644
--- a/fprs/email.py
+++ b/fprs/email.py
@@ -35,13 +35,15 @@ For details and to comment, visit {url}
         body += "{url}\n"
         body = body.format(endorsement=endorsement, url=url)
 
+        to = "debian-{}@lists.debian.org".format(notify_ml)
         cc = [endorsement.fingerprint.person, endorsement.author]
 
         headers = {}
         msg = build_django_message(
             from_email=(f"{endorsement.author.fullname} (via nm.debian.org)", "nm@debian.org"),
-            to="debian-{}@lists.debian.org".format(notify_ml),
+            to=to,
             cc=cc,
+            reply_to=[to]+cc,
             subject="Endorsing {}'s key {}".format(
                 endorsement.fingerprint.person.fullname,
                 endorsement.fingerprint.fpr,
@@ -50,9 +52,10 @@ For details and to comment, visit {url}
             headers=headers,
             body=body)
     msg.send()
-    log.debug("sent mail from %s to %s cc %s bcc %s subject %s",
+    log.debug("sent mail from %s to %s cc %s bcc %s reply-to: %s subject %s",
               msg.from_email,
               ", ".join(msg.to),
               ", ".join(msg.cc),
               ", ".join(msg.bcc),
+              ", ".join(msg.reply_to),
               msg.subject)
diff --git a/process/email.py b/process/email.py
index 2ece67f6..893bfd9b 100644
--- a/process/email.py
+++ b/process/email.py
@@ -46,15 +46,17 @@ the nm.debian.org housekeeping robot
             from_email=("nm.debian.org", "nm@debian.org"),
             to=process.person,
             cc=process.archive_email,
+            reply_to=["nm@debian.org", process.archive_email, process.person],
             subject="New Member process, {}".format(
                 const.ALL_STATUS_DESCS[process.applying_for]),
                 body=body)
     msg.send()
-    log.debug("sent mail from %s to %s cc %s bcc %s subject %s",
+    log.debug("sent mail from %s to %s cc %s bcc %s reply-to: %s subject %s",
               msg.from_email,
               ", ".join(msg.to),
               ", ".join(msg.cc),
               ", ".join(msg.bcc),
+              ", ".join(msg.reply_to),
               msg.subject)
 
 
@@ -103,9 +105,11 @@ For details and to comment, visit {url}
         else:
             extra_info = ""
 
+        to = "debian-{}@lists.debian.org".format(notify_ml)
+
         msg = build_django_message(
             from_email=(f"{statement.uploaded_by.fullname} (via nm.debian.org)", "nm@debian.org"),
-            to="debian-{}@lists.debian.org".format(notify_ml),
+            to=to,
             cc=cc,
             subject="{}: {}{}".format(
                 process.person.fullname,
@@ -113,14 +117,15 @@ For details and to comment, visit {url}
                 extra_info),
             date=date,
             headers=headers,
-            reply_to=[(f"{statement.uploaded_by.fullname}", statement.uploaded_by.email),],
+            reply_to=[to]+cc,
             body=body)
     msg.send()
-    log.debug("sent mail from %s to %s cc %s bcc %s subject %s",
+    log.debug("sent mail from %s to %s cc %s bcc %s reply-to: %s subject %s",
               msg.from_email,
               ", ".join(msg.to),
               ", ".join(msg.cc),
               ", ".join(msg.bcc),
+              ", ".join(msg.reply_to),
               msg.subject)
 
 
@@ -157,20 +162,23 @@ def notify_new_log_entry(entry, request=None, mia=None):
             headers["X-MIA-Summary"] = mia
             cc.append("mia-{}@qa.debian.org".format(process.person.ldap_fields.uid))
 
+        to = "nm@debian.org"
+
         msg = build_django_message(
             from_email=(f"{entry.changed_by.fullname} (via nm.debian.org)", "nm@debian.org"),
-            to="nm@debian.org",
+            to=to,
             cc=cc,
             subject=subject,
             headers=headers,
-            reply_to=[(f"{entry.changed_by.fullname}", entry.changed_by.email),],
+            reply_to=[to]+cc,
             body=body)
     msg.send()
-    log.debug("sent mail from %s to %s cc %s bcc %s subject %s",
+    log.debug("sent mail from %s to %s cc %s bcc %s reply-to: %s subject %s",
               msg.from_email,
               ", ".join(msg.to),
               ", ".join(msg.cc),
               ", ".join(msg.bcc),
+              ", ".join(msg.reply_to),
               msg.subject)
 
 
@@ -216,14 +224,15 @@ I hope you have a good time, and if you need anything please mail nm@debian.org.
             cc=[process.archive_email, assignment.assigned_by],
             subject="New Member process, {}".format(
                 const.ALL_STATUS_DESCS[process.applying_for]),
-            reply_to=[(f"{assignment.assigned_by.fullname}", assignment.am.person.email),],
+            reply_to=[process.person, assignment.am.person, process.archive_email],
             body=body)
     msg.send()
-    log.debug("sent mail from %s to %s cc %s bcc %s subject %s",
+    log.debug("sent mail from %s to %s cc %s bcc %s reply-to: %s subject %s",
               msg.from_email,
               ", ".join(msg.to),
               ", ".join(msg.cc),
               ", ".join(msg.bcc),
+              ", ".join(msg.reply_to),
               msg.subject)
 
 
@@ -303,17 +312,20 @@ If you need help with anything, please mail nm@debian.org.
     assignment = process.current_am_assignment
     if assignment:
         to.append(assignment.am.person)
+    cc = [process.archive_email, "nm@debian.org"]
 
     msg = build_django_message(
         pinger,
         to=to,
-        cc=[process.archive_email, "nm@debian.org"],
+        cc=cc,
+        reply_to=to+cc,
         subject="NM process stuck?",
         body="".join(body))
     msg.send()
-    log.debug("sent mail from %s to %s cc %s bcc %s subject %s",
+    log.debug("sent mail from %s to %s cc %s bcc %s reply-to: %s subject %s",
               msg.from_email,
               ", ".join(msg.to),
               ", ".join(msg.cc),
               ", ".join(msg.bcc),
+              ", ".join(msg.reply_to),
               msg.subject)
diff --git a/process/tests/test_ops.py b/process/tests/test_ops.py
index 9de00271..5c5f06b6 100644
--- a/process/tests/test_ops.py
+++ b/process/tests/test_ops.py
@@ -154,7 +154,8 @@ class TestProcessStatementAdd(ProcessFixtureMixin, TestCase):
         self.assertEqual(mail.outbox[0].cc, ['App <app@example.org>', 'archive-1@nm.debian.org',
                                              'Dam <dam@example.org>'])
         self.assertEqual(mail.outbox[0].bcc, [])
-        self.assertEqual(mail.outbox[0].reply_to, ['Dam <dam@example.org>'])
+        self.assertEqual(mail.outbox[0].reply_to, ['debian-newmaint@lists.debian.org', 'App <app@example.org>',
+                                                   'archive-1@nm.debian.org', 'Dam <dam@example.org>'])
         self.assertEqual(mail.outbox[0].extra_headers, {'Date': 'Tue, 01 Jan 2019 00:00:00 -0000'})
         self.assertEqual(
                 mail.outbox[0].body,
@@ -178,7 +179,8 @@ class TestProcessStatementAdd(ProcessFixtureMixin, TestCase):
         self.assertEqual(mail.outbox[0].to, ['debian-newmaint@lists.debian.org'])
         self.assertEqual(mail.outbox[0].cc, ['App <app@example.org>', self.processes.app.archive_email,
                                              'Dam <dam@example.org>'])
-        self.assertEqual(mail.outbox[0].reply_to, ['Dam <dam@example.org>'])
+        self.assertEqual(mail.outbox[0].reply_to, ['debian-newmaint@lists.debian.org', 'App <app@example.org>',
+                                                   'archive-1@nm.debian.org', 'Dam <dam@example.org>'])
         self.assertEqual(mail.outbox[0].bcc, [])
         self.assertEqual(mail.outbox[0].extra_headers, {'Date': 'Tue, 01 Jan 2019 00:00:00 -0000'})
         self.assertEqual(
-- 
2.29.2

