如何通过电子邮件发送变量

时间:2019-02-17 10:28:20

标签: python

我正在尝试为作业发送两步验证码,并且一切正常,但是当我收到电子邮件时,没有号码。 For Loop创建随机的6位代码。它说:请输入此两步验证码来确认您的登录。没有”

我一直在寻找解决方案和google等的堆栈流

def TwoStep():

    for x in range(1):

            RandomNumber = print(random.randint(100000,1000000))


    time.sleep(5)

    email_send = 'recieving email'
    email_user = 'myemail'
    email_password = 'password'

    subject = '2-Step Verification'

    msg = MIMEMultipart()
    msg['From'] = email_user
    msg['To'] = email_send
    msg['Subject'] = subject


    body = ('Please confirm your login by entering this 2-step verification code. ' + str(RandomNumber))
    msg.attach(MIMEText(body,'plain'))


    text = msg.as_string()
    server = smtplib.SMTP('smtp.gmail.com',587)
    server.starttls()
    server.login(email_user,email_password)

    server.sendmail(email_user,email_send,text)
    server.quit()

TwoStep()

能够通过电子邮件发送6位代码。

2 个答案:

答案 0 :(得分:2)

一些要评论的东西:

1)print(random.randint(100000,1000000))在控制台中显示数字,但不返回任何内容,这就是为什么要获得None值的原因。

2)请勿使用大写字母的变量,按照惯例,这些名称是为命名类保留的,将其视为变量会令人困惑。请注意,即使SO高亮也将其标记为另一种颜色。使用一些驼峰式或蛇形的命名方式,例如randomNumberrandom_number(在Python中更常见)。

3)for循环是否甚至必要?我认为您只需要生成一个随机数,就可以删除它周围的循环,只需分配一次即可。

答案 1 :(得分:0)

您的代码没有返回随机数而是打印了一个随机数,为什么还要添加循环?

for x in range(1):
    RandomNumber = print(random.randint(100000,1000000))