瀏覽代碼

generate a reply_email, make sure it is unique

Son NK 5 年之前
父節點
當前提交
8c3834c957
共有 1 個文件被更改,包括 12 次插入6 次删除
  1. 12 6
      email_handler.py

+ 12 - 6
email_handler.py

@@ -115,8 +115,14 @@ class MailHandler:
                 alias,
                 alias,
                 website_email,
                 website_email,
             )
             )
-            # todo: make sure reply_email is unique
-            reply_email = f"reply+{random_words()}@{EMAIL_DOMAIN}"
+
+            # generate a reply_email, make sure it is unique
+            # not use while to avoid infinite loop
+            for _ in range(1000):
+                reply_email = f"reply+{random_words()}@{EMAIL_DOMAIN}"
+                if not ForwardEmail.get_by(reply_email=reply_email):
+                    break
+
             forward_email = ForwardEmail.create(
             forward_email = ForwardEmail.create(
                 gen_email_id=gen_email.id,
                 gen_email_id=gen_email.id,
                 website_email=website_email,
                 website_email=website_email,
@@ -140,10 +146,10 @@ class MailHandler:
             # so it can pass DMARC check
             # so it can pass DMARC check
             # replace the email part in from: header
             # replace the email part in from: header
             from_header = (
             from_header = (
-                get_email_name(msg["From"])
-                + " - "
-                + website_email.replace("@", " at ")
-                + f" <{forward_email.reply_email}>"
+                    get_email_name(msg["From"])
+                    + " - "
+                    + website_email.replace("@", " at ")
+                    + f" <{forward_email.reply_email}>"
             )
             )
             msg.replace_header("From", from_header)
             msg.replace_header("From", from_header)
             LOG.d("new from header:%s", from_header)
             LOG.d("new from header:%s", from_header)