Как решить проблему, при которой в коде не генерируется случайное число, когда в коде генерируется случайное число? - PullRequest
0 голосов
/ 17 февраля 2019

Я просто хочу получить случайное число в своем электронном письме, а затем подтвердить его в моем коде как True.

Я использую Python 3.5 для генерации случайного числа с использованием «import random» и «random.randint (х, у)».Хотя случайное число генерируется в моем коде и также отображается на экране, тем не менее, когда я отправляю то же самое на мой адрес электронной почты, используя smtp, письмо принимается пустым без сгенерированного случайного числа.Кроме того, случайное число на экране, которое отображается после выполнения кода, не совпадает при вводе для проверки.

import smtplib
import getpass
import random

server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo()
server.starttls()

email = input("Enter you email address: ")
password = getpass.getpass("Enter your password: ")

server.login(email, password)

from_address = email
to_address = input('Enter the email you want the message to be sent to: ')
subject = input('Enter the subject: ')
secure_code = random.randint(1000, 9999)
print(f'The secure code received on the mail is {secure_code}')
message = f'Secure Code: {secure_code}'
msg = "Subject: "+subject + '\n' + message
print(msg)
server.sendmail(from_address, to_address, msg)

verify = input("Enter the secure code: ")

if verify == secure_code:
    print('Transaction accepted.')
else:
    print('Attention! The code entered is not correct!')
    break

После ввода всех необходимых сведений, сообщение должно быть получено с отображаемым случайным числом итогда номер при вводе должен быть проверен.

1 Ответ

0 голосов
/ 18 февраля 2019

Для формата почты Интернета требуется пустая строка в качестве разделителя между заголовками и телом сообщения.Кроме того, маркер конца строки в почтовом сообщении представляет собой пару символов '\r\n', а не только один символ '\n'.Поэтому измените это:

    msg = "Subject: "+subject + '\n' + message

на:

    msg = "Subject: " + subject + '\r\n' + '\r\n' + message

Первый '\r\n' отмечает конец строки темы, а второй обеспечивает пустую строку, которая отделяет заголовок от тела.

Кроме того, случайное число на экране, которое отображается после запуска кода, не совпадает при вводе для проверки.

Это потому, что в Python 3 возвращаемое значениепо input() всегда является строкой.Эта строка:

    verify = input("Enter the secure code: ")

устанавливает verify в строку.Затем эта строка:

    if verify == secure_code:

сравнивает строку verify с числом secure_code.Строка и число не совпадают, поэтому сравнение всегда дает ложный результат.Чтобы исправить, измените это сравнение на следующее:

    if verify == str(secure_code):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...