Проблема с электронной почтой SMTP Gramex

#python-3.x #email #smtp #gramex

Вопрос:

Я должен отправить электронное письмо из функции python нескольким пользователям с динамическим контентом.

Я предоставил данные электронной почты в gramex.yaml, как показано ниже

 email:
  barcode-mail-service:
    type: gmail
    email: gramex.guide@gmail.com
    password: alphaBetaGamma
 

В моей функции python я реализовал функциональность почты, как показано ниже:

 def email_users(_pending_users, approval):
    mailer = service.email['barcode-mail-service']
    content = []
    if approval == 'Approved':
        content = [f"Hi {obj['user']},nn 
                    Welcome to the Service online portal!"
                    for obj in 
                    _pending_users.to_dict('r')
                  ]
    else:
        content = [f"Hi {obj['user']},nn 
                   Your request has been rejected by the approver!"
                   for obj in _pending_users.to_dict('r')
                  ]
    to_list = _pending_users['email'].tolist() #gets list of all email ids
    for index in range(len(to_list)): #loops over each mail id and sends the email
        mailer.mail(
            to=to_list[index],
            subject=f'Barcode User Access {approval}',
            html=content[index]
        )
 

Когда я выполняю вышеуказанную функцию, я получаю следующую ошибку:

Тайм-аут: [ошибка 10060] Попытка подключения не удалась, поскольку подключенная сторона не ответила должным образом через некоторое время, или не удалось установить соединение, поскольку подключенный хост не ответил

Как я могу это исправить?

Ответ №1:

Похоже, это проблема с брандмауэром. SMTP внутренне использует порт 25 для отправки электронной почты. Включите (Разрешите) порт 25 в вашей системе и попробуйте, если это сработает. Вам также потребуется включить этот порт на сервере во время развертывания.

Примечание: Проверьте, какой порт используется для отправки электронной почты вашим почтовым обменом

Вы можете проверить эту ссылку, чтобы включить ее в ОС Windows

Комментарии:

1. Я предполагаю, что на самом деле они вообще не пытаются подключиться к порту 25, но я не знаком с Gramex. Сообщение, вероятно, должно включать обратную связь и любые соответствующие файлы конфигурации, чтобы помочь нам увидеть, где они пытаются подключиться.

2. @tripleee — Gramex-это платформа с низким кодом, используемая для создания приложений для передачи данных. Ссылка ( learn.gramener.com/guide ). Эта проблема связана с потреблением услуг электронной почты ( learn.gramener.com/guide/email/#send-email )

3. Правильно, поэтому определение barcode-mail-service , вероятно, должно указывать порт 587, если это служба Gmail; но мы не можем судить об этом по информации в вопросе.

4. Правильно, если ретрансляция выполняется с использованием SMTPS. Полностью согласен @tripleee