Использование smtplib для отправки электронной почты на mailtrap работает только тогда, когда код не находится внутри функции или класса - PullRequest
1 голос
/ 03 февраля 2020

этот вопрос чем-то похож на python: при отправке почты происходит сбой, когда внутри блока «с» .

Я использую Python (3.6) для отправки письма на mailtrap smtp. Mailtrap фактически предоставляет вам код интеграции для smtplib, который приведен ниже:

import smtplib

sender = "Private Person <from@smtp.mailtrap.io>"
receiver = "A Test User <to@smtp.mailtrap.io>"

message = f"""\
Subject: Hi Mailtrap
To: {receiver}
From: {sender}

This is a test e-mail message."""

with smtplib.SMTP("smtp.mailtrap.io", 2525) as server:
    server.login("<MYUSER>", "<MYPASSWORD>")
    server.sendmail(sender, receiver, message)

Приведенный выше код прекрасно работает, если я помещаю его в модуль и запускаю его. I go для входящей почты mailtrap и убедитесь, что электронная почта есть. Однако я хочу заключить это в такую ​​функцию:


import smtplib
from socket import gaierror


def test():
    sender = "Test Dev <from@smtp.mailtrap.io>"
    receiver = "Test User <to@smtp.mailtrap.io>"
    message = f"""\
    Subject: Hi there
    To: {receiver}
    From: {sender}

    TESTING"""

    try:
        with smtplib.SMTP("smtp.mailtrap.io", 2525) as server:
            server.login("<MYUSER>", "<MYPASSWORD")
            print("Sending email")
            server.sendmail(sender, receiver, message)
        print('Sent')


    except (gaierror, ConnectionRefusedError):
        print('Failed to connect to the server. Bad connection settings?')
    except smtplib.SMTPServerDisconnected:
        print('Failed to connect to the server. Wrong user/password?')
    except smtplib.SMTPException as e:
        print('SMTP error occurred: ' + str(e))

if __name__ == "__main__":
    test()

Это не работает. ПОЧЕМУ? Вот вывод: вывод изображения Нет ошибки подключения или каких-либо других исключений. Однако я go отправляю почту и не нахожу там электронную почту.

Это проблема почтовой ловушки или она связана с smtplib? Я ломаю голову вокруг этого

...