Создание функции электронной почты в Python - PullRequest
1 голос
/ 09 июля 2019

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

Вот функция (за исключением фактической информации электронной почты и пароля, конечно):

import smtplib, ssl

port = 465
smtp_server = "smtp.gmail.com"
sender_email = "my_email@gmail.com"
receiver_email = "their_email@gmail.com"
password = "password"
message = """\
    Subject: Subject

    This is the email body"""

def send(msg):

    context = ssl.create_default_context()
    with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
        server.login(sender_email, password)
        server.sendmail(sender_email, receiver_email, msg)
        print("SENT")

if __name__ == "__main__":
    send(message)

это даже не дает мне ошибок, просто не работает. Однако, если я делаю это так, все работает нормально:

import smtplib, ssl

port = 465
smtp_server = "smtp.gmail.com"
sender_email = "my_email@gmail.com"
receiver_email = "their_email@gmail.com"
password = "password"
message = """\
Subject: Subject

This is the email body"""

context = ssl.create_default_context()
with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
    server.login(sender_email, password)
    server.sendmail(sender_email, receiver_email, message)
    print("SENT")

Есть мысли о том, почему это происходит?

1 Ответ

0 голосов
/ 09 июля 2019

Единственное отличие, которое я вижу, - это пробел перед строкой вашей темы в содержимом письма.Попробуйте удалить его так, чтобы ваш фрагмент был следующим:

import smtplib, ssl

port = 465
smtp_server = "smtp.gmail.com"
sender_email = "my_email@gmail.com"
receiver_email = "their_email@gmail.com"
password = "password"
message = """\
Subject: Subject

This is the email body"""

def send(msg):

    context = ssl.create_default_context()
    with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
        server.login(sender_email, password)
        server.sendmail(sender_email, receiver_email, msg)
        print("SENT")

if __name__ == "__main__":
    send(message)

Учитывая, что это единственное реальное различие в ваших двух фрагментах, это моя лучшая идея относительно того, что идет не так.

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