使用gmail通过python没有smtp



自5月30日起,smtp不再被接受。

https://support.google.com/accounts/answer/6010255?hl=en& ref_topic = 7188673

是什么新方法来制作一个简单的python电子邮件,而不是一个完整的应用程序与"登录与谷歌";选择吗?

不确定为什么我被要求提供代码和错误,因为我已经诊断出问题并要求提供替代方法。在这里。这是一个方便的电子邮件,当我在家工作时,它会发短信让我锻炼。

import time
import smtplib
import random
gmail_user = 'usernameImNotSharing@gmail.com'
gmail_password = 'TheCorrectPassword'
sent_from = gmail_user
to = ['myphonenumber@vtext.com']
exercises = ['push ups', 'jumps in place', '20lb curls', 'tricep extensions', 'quarter mile runs']
levels = [1, 2, 3]
level1 = ['10', '15', '16', '20', '1']
level2 = ['15', '30', '30', '40', '2']
level3 = ['20', '50', '48', '70', '4']
while True:
if int(time.strftime('%H')) > 9:
if int(time.strftime('%H')) < 23:
abc = random.uniform(0, 1)
picker = random.randint(0, 4)
if abc < 0.3:
level = level1
if 0.3 < abc and abc < 0.8:
level = level2
if abc > 0.8:
level = level3
exersize = exercises[picker]
amount = level[picker]
try:
subject = f'Test'
body = f'Do {amount} {exersize}'
server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.ehlo()
server.login(gmail_user, gmail_password)
server.sendmail(sent_from, to, body)
server.close()
print('Email sent!')
except Exception as error:
print(error)
time.sleep(random.randint(1500, 4800))
time.sleep(100)

错误:

(535, b'5.7.8不接受用户名和密码。了解更多信息请访问n5.7.8 https://support.google.com/mail/?p=BadCredentials jj1-20020a170903048100b00163247b64bfsm7655137plb。115 - gsmtp')

解决如下:SMTP仍然接受应用程序密码。创建应用程序密码的步骤可以在这里找到,但你必须先启用2因素验证,然后才能创建应用程序密码。

https://support.google.com/accounts/answer/185833https://myaccount.google.com/security

2022年5月30日后更正,google smtp服务器不再接受发送用户实际密码

你应该配置一个应用程序的密码。然后用这个新的app密码替换代码中的密码。

应用程序密码是一个16位的密码,可以让不太安全的应用程序或设备访问您的谷歌帐户。App密码只能用于开启了两步验证的账户。

gmail_user = 'usernameImNotSharing@gmail.com'
gmail_password = 'AppsPassword'

这通常是由于用户启用了2fa。

  • 如何使用Python发送电子邮件。整整2.2分钟!
  • 如何修复SMTP用户名和密码不被接受的错误。

另一个选择是使用Xoauth2。

  • 2023:如何访问GMail SMTP没有启用2fa。(Python oauth2)
import smtplib
host = "server.smtp.com"
server = smtplib.SMTP(host)
FROM = "testpython@test.com"
TO = "bla@test.com"
MSG = "Subject: Test email pythonnnBody of your message!"
server.sendmail(FROM, TO, MSG)
server.quit()
print ("Email Send")

最新更新