Python 在我的功能中使用谷歌应用程序密码发送电子邮件时出现问题

Python 在我的功能中使用谷歌应用程序密码发送电子邮件时出现问题,python,mail-server,Python,Mail Server,我正在尝试用Python创建一个函数,使我能够将电子邮件从我的电子邮件地址发送到预期收件人的电子邮件地址 我已经用我的Gmail设置了谷歌的两步验证,并设置了谷歌应用程序密码 到目前为止,我已经在网上查看了一些示例,但我不知道为什么send\u email()不起作用: def send_email(): server = smtplib.SMTP('smtp.gmail.com', 587) server.ehlo() server.login('<my_ema

我正在尝试用Python创建一个函数,使我能够将电子邮件从我的电子邮件地址发送到预期收件人的电子邮件地址

我已经用我的Gmail设置了谷歌的两步验证,并设置了谷歌应用程序密码

到目前为止,我已经在网上查看了一些示例,但我不知道为什么
send\u email()
不起作用:

def send_email():
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.ehlo() 
    server.login('<my_email_address>', '<google_app_password>')

    subject = 'You've Got Mail!'
    body = 'How are you buddy?'

    message = f'Subject: {subject}\n\n{body}'

    server.sendmail(
        '<my_email_address>',
        '<my_intended_recidpients_email_address>',
        message
    )
    print('Email has been successfully sent')

    server.quit()
def send_email():
server=smtplib.SMTP('SMTP.gmail.com',587)
server.ehlo()
server.login(“”,“”)
主题=“你有邮件!”
body=“你好吗,伙计?”
message=f'Subject:{Subject}\n\n{body}'
server.sendmail(
'',
'',
消息
)
打印('电子邮件已成功发送')
server.quit()

可能是什么问题?

您缺少两行代码

server.ehlo()之后,您需要:

    server.starttls()
    server.ehlo()
server.starttls()
是必需的,因为它告诉电子邮件服务器电子邮件客户端希望将现有的不安全连接转换为安全连接


由于完成TLS握手后,SMTP协议将重置为其初始状态,因此需要在服务器.starttls()之后的第二个
server.ehlo()

因此下面
def send_email():
,我需要:
server=smtplib.SMTP('SMTP.gmail.com',587)
server.ehlo()
server.starttls()
server.ehlo()
server.login('',)
as-for-me脚本如果使用两步验证可能不起作用,因为您可能会在手机上获得代码,您可能需要在代码中使用这些代码,这可能是个问题。您可能需要替换
主题=“您有邮件!”subject=“你有邮件!”