Flask-mail создает независимую почту вместо почтовой ветки - PullRequest
0 голосов
/ 11 апреля 2019

Я создаю службу проверки электронной почты и использую Flask-mail.Всякий раз, когда пользователь регистрируется, я отправляю уникальную ссылку для проверки адреса электронной почты.

Согласно моему коду, тема письма (проверьте адрес электронной почты ...) остается неизменной, а ссылка для подтвержденияменяется каждый раз при отправке нового письма.Однако каждый раз, когда я отправляю новое письмо одному и тому же получателю , сообщение заканчивается как цепочка электронной почты в почтовом ящике пользователя gmail.

из прикрепленного изображенияВы можете видеть, что три отправленных письма превратились в цепочку писем .

Как настроить API Flask-mail для отправки независимых писем вместо создания цепочки писем?

Я просматривал документацию и StackOverflow, но не смог найти никакого решения.

enter image description here


Код для справки

mail = Mail(app=current_app)

# embedding a new validation link in the message body.
message_body = VERIFY_ACC_BODY.format(url_for('auth.verify_user_email', 
user_token=token, _external=True))

email_notification = Message(subject=VERIFY_ACC_SUBJECT,
                                 recipients=[user.user_id],
                                 body=message_body)

# creates email threads instead of independent emails. Why?
mail.send(email_notification)

NB : Пожалуйста, не предлагайте менять тему электронной почты для каждой почты.Это не то решение, которое я ищу.

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

К сожалению, вы пытаетесь бороться с функцией Gmail, которая в значительной степени основана на теме письма. Подробнее об этом .

Электронные письма группируются, если каждое сообщение соответствует следующему:

  • Те же самые получатели, отправители или тема, как и у предыдущего сообщения.
  • Заголовок ссылкис теми же идентификаторами, что и в предыдущем сообщении.
  • Отправлено в течение одной недели после предыдущего сообщения.

Для предотвращения сгруппированных электронных писем:

  • Создать новоетема для каждого сообщения, которое вы не хотите группировать.
  • Отправляйте каждое сообщение с уникальным ссылочным значением заголовка, которое не соответствует предыдущему сообщению.

Выможет попытаться: extra_headers={"references": "{{ unique value }}"} в вашем email_notification = Message(...), чтобы попытаться избежать функции потоков Gmail.

0 голосов
/ 11 апреля 2019

NB. Этот ответ действителен с 11 апреля 2019 года. В будущем Gmail или Flask-mail могут изменить несколько политик или обновить их API. Поэтому этот ответ может быть недействительным в будущем.


Я просто оставляю здесь этот ответ в надежде, что это может сэкономить время для людей в будущем.

В дополнение к ответу @ VizslaVizsla, установка extra_headers={...}, похоже, не работает, несмотря на повторное тестирование. Тем не менее, электронные письма сгруппированы.

A аналогичный вопрос был опубликован на StackExchange несколько лет назад.

Пока что я пробовал разные extra_headers. Никто из них не помешал группировке.

from uuid import uuid4
# uuid used to generate a unique identifier for every mail.

extra_headers={'references': str(uuid4())} # Didn't work
extra_headers={'Message Id': str(uuid4())} # Didn't work
extra_headers={'Message-Id': str(uuid4())} # Gmail message id. Didn't work

Похоже, вы должны изменить заголовок темы или получателей, чтобы предотвратить группировку. Я не проверял, изменяя список CC или BCC, хотя. Если у вас есть время или терпение, не стесняйтесь проверить это и опубликовать свои наблюдения здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...