python - 用Python制作一个电子邮件函数

标签 python function email

我现在正在开发一个需要发送电子邮件功能的项目。我的问题是,每当我将电子邮件代码放入函数中时,它就会停止工作。

这是该函数(当然不包括实际的电子邮件和密码信息):

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")

对于为什么会发生这种情况有什么想法吗?

最佳答案

我能看到的唯一区别是电子邮件内容中主题行之前的空格。尝试删除它,使您的代码片段如下:

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)

鉴于这是您的两个片段中唯一真正的区别,这是我对出了什么问题的最佳想法。

关于python - 用Python制作一个电子邮件函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56945085/

相关文章:

function - 如何从 SASS 中的任意数字中去除单位?

支持移动和 Web 布局的 HTML 电子邮件模板框架

python - 在 Python 中将两个文本合并为一个

python - 从 python 脚本创建可执行文件

python - 如何封装python模块?

c - 如何动态加载我自己的库,并调用其中的方法?

javascript - 使用 AJAX 调用 php 函数一直失败

python - 将列添加到二维列表

java - 如何在 Gradle 中打开带有主题和正文的默认邮件程序?

java - 用Java发送/接收电子邮件