我正在尝试在Python中创建一个函数,使我能够从我的电子邮件地址向目标收件人发送电子邮件。
我已经使用 Gmail 设置了 Google 的两步验证,并设置了 Google 应用专用密码。
到目前为止,我已经在网上查看了示例,但我不知道为什么send_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}nn{body}'
server.sendmail(
'<my_email_address>',
'<my_intended_recidpients_email_address>',
message
)
print('Email has been successfully sent')
server.quit()
可能是什么问题?
您缺少 2 行代码。
server.ehlo()
后,您需要:
server.starttls()
server.ehlo()
server.starttls()
是必要的,因为它告诉电子邮件服务器电子邮件客户端希望将现有的不安全连接转换为安全连接。
需要server.starttls()
之后的第二个server.ehlo()
,因为在完成 TLS 握手后,SMTP 协议将重置为其初始状态。