Как решить проблему блокировки при отправке писем при использовании Python?

Как избежать блокировки за спам при отправке рассылки писем с корпоративной почты? У меня есть код, который отправляет письма через SMTP, используя адреса из текстового файла. Однако, после отправки 15-20 писем, почтовый ящик блокируется и письма больше не отправляются. Можно ли сделать изменения в коде, например, добавить таймауты в несколько минут после отправки каждого письма, чтобы избежать этой проблемы?
  • 7 октября 2023 г. 7:17
Ответы на вопрос 5
Да, можно избежать блокировки за спам при отправке рассылки писем, добавив таймауты между отправкой каждого письма. Это позволит вашему коду замедлить отправку писем, что снизит вероятность блокировки вашего почтового ящика.

Вот пример кода, который демонстрирует, как добавить таймауты в несколько минут после отправки каждого письма:

```python
import smtplib
import time

def send_email(sender_email, password, receiver_email, message):
    with smtplib.SMTP("<smtp_server>", <smtp_port>) as server: # Замените "<smtp_server>" и <smtp_port> на значения вашего почтового сервера
        server.starttls()
        server.login(sender_email, password)
        server.sendmail(sender_email, receiver_email, message)
    
def main():
    sender_email = "<ваш_электронный_адрес>" # Замените "<ваш_электронный_адрес>" на ваш корпоративный адрес электронной почты
    password = "<ваш_пароль>" # Замените "<ваш_пароль>" на пароль от вашего корпоративного адреса электронной почты

    with open("email_list.txt", "r") as file:
        receiver_emails = file.read().splitlines()

    for receiver_email in receiver_emails:
        message = "Привет, это письмо отправлено из Python!"

        send_email(sender_email, password, receiver_email, message)
        print("Письмо отправлено на адрес", receiver_email)

        time.sleep(180) # Добавляем таймаут в 180 секунд (3 минуты) после отправки каждого письма

if __name__ == "__main__":
    main()
```

В этом коде используется функция `time.sleep(180)`, чтобы остановить выполнение программы на 3 минуты после отправки каждого письма. Однако, продолжайте проверять правила своего почтового сервера, чтобы убедиться, что такое время ожидания безопасно и не нарушит правила сервера.
рассылку писем с корпоративной почты 
 Первое, что нужно уточнить, это какой именно вид "корпоративной почты" вы используете. Это собственный почтовый сервер, управляемый системным администратором, или вы пользуетесь платным сервисом, таким как почта для домена от Яндекса или Mail.ru. В любом случае, вы можете задать вопрос вашему системному администратору или технической поддержке выбранного почтового сервиса для получения точной информации.

происходит некая "блокировка" 
 Чтобы выяснить причину блокировки, рекомендую узнать, блокируется ли отправка с конкретной учётной записи, с всего домена или с конкретного IP-адреса клиента. Это поможет найти решение проблемы и предотвратить блокировку в будущем.

Принудительно в коде писать таймауты в несколько минут после отправки писем? 
 Если в вашей рассылке содержится не более 100 адресов, вы можете поместить таймаут в несколько минут после отправки писем. Однако, если вам нужно отправить сообщения на 10 000 адресов, то лучше воспользоваться сервисом для почтовых рассылок, которые предоставляются специальными сервисами. Это поможет избежать проблем с блокировкой и повысит эффективность вашей рассылки.
Похожие вопросы