Рассылка Python smtp (Postfix MTA): получение уведомлений, когда получатель открывает отправленную почту - PullRequest
0 голосов
/ 15 мая 2019

Я создаю скрипт Python 3.7 для автоматической отправки около 700 электронных писем через SMTP-сервер моей компании.Вся отправка работает нормально, но я должен быть предупрежден о том, какие получатели открыли почту, чтобы я мог выделить их как действительные в моем списке.Может кто-нибудь с опытом в этом вопросе объяснить, как это работает?

Хотя есть некоторые вопросы, касающиеся опции заголовка «Disposition-Notification-To», ни один из них действительно не объясняет, как это работает.

  1. Кто несет ответственность за то, чтобы побудить читателя подтвердить чтение сообщения?
  2. Кто несет ответственность за отправку электронного письма обратно на мой адрес в случае, если читатель подтвердит запрос?
  3. Есть ли другие варианты для достижения этой цели?

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

def build_message(address):
    mail = EmailMessage()

    mail['From'] = MY_EMAIL
    mail['To'] = address
    mail['Subject'] = "This is a TEST"
    mail['Disposition-Notification-To'] = MY_EMAIL
    mail.set_content('Hello this is a test')

    image_cid = make_msgid(domain='xyz.com')
    mail.add_alternative("""\
                <html>
                    <body>
                        <p>This is a test.</p>
                        <img src="cid:{image_cid}">
                    </body>
                </html>
                """.format(image_cid=image_cid[1:-1]), subtype='html')

    with io.open(attachment_path, 'rb') as img:
        maintype, subtype = mimetypes.guess_type(img.name)[0].split('/')
        mail.get_payload()[1].add_related(img.read(),
                                          maintype=maintype,
                                          subtype=subtype,
                                          cid=image_cid)

    return mail

Это моя функция построения сообщений, и результат отправляется через открытый сеанс SMTP (smtplib).Хотя заголовок «Disposition-Notification-To» размещен, ничего другого не происходит.

РЕДАКТИРОВАТЬ: почтовый интерфейс моей компании предлагает опцию «Уведомить о прочтении», поэтому я знаю, что мои учетные данные разрешено делать это (стандартные учетные записи GMAILне разрешать чтение уведомлений).

РЕДАКТИРОВАТЬ 2: Моя компания использует Postfix в качестве MTA.

1 Ответ

0 голосов
/ 15 мая 2019

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

Из моего собственного опыта, В нашей компании мы используем smtp-сервер sendgrid для отправки писем, sendgrid предоставляет нам API для чтения отчетов о состоянии каждого отправленного электронного письма, как только отчет о состоянии доставки включен из настроек. Эти отчеты удаленно размещаются на веб-странице, которую вы указали в настройках. Эти отчеты публикуются в формате json. Вы можете получить информацию, если пользователь открыл электронное письмо или отправил электронное письмо в папку со спамом из этих отчетов.

Итак, я думаю, вам также следует спросить своих SMTP-провайдеров, как вы можете сделать это с помощью их услуги.

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