#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