from machine import Pin, I2C
import ssd1306
import network
import time
# ESP32 Pin assignment
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
oled.text("Connecting",10,10)
oled.show()
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect('Wokwi-GUEST', '')
while not sta_if.isconnected():
oled.text(".",10,10)
oled.show()
time.sleep(0.1)
oled.fill(0)
oled.show()
oled.text(" Connected!",10,10)
oled.show()
#OTP code
import random
import smtplib
OTP = random.randint(100000,999999) #generating a randomm 6-digit OTP
#setting up server
server = smtplib.SMTP('smtp.gmail.com',587)
#server = smtplib.SMTP('64.233.184.108',587) #IP address of smtp.gmail.com to bypass DNS resolution
server.starttls()
name = "Aayushman Singh"
global receiver_email
receiver_email = "[email protected]"
server.login("[email protected]","cr34t30tp")
body = "Dear"+name+","+"\n"+"\n"+"your OTP is "+str(OTP)+"."
subject = "OTP verification using python"
message = f'subject:{subject}\n\n{body}'
server.sendmail("[email protected]",receiver_email,message)
def sending_otp(receiver_email):
new_otp = random.randint(100000,999999)
body = "dear"+name+","+"\n"+"\n"+"your OTP is "+str(new_otp)+"."
subject = "OTP verification using python"
message = f'subject:{subject}\n\n{body}'
server.sendmail("[email protected]",receiver_email,message)
oled.fill(0)
oled.show()
oled.text("OTP has been sent to"+receiver_email,10,10)
oled.show
oled.fill(0)
oled.show()
received_OTP = int(input(oled.text("enter OTP:",10,10)))
oled.show()
if received_OTP==new_otp:
oled.fill(0)
oled.show()
oled.text("OTP verified",10,10)
oled.show()
else:
oled.fill(0)
oled.show()
oled.text("invalid OTP",10,10)
oled.show()
oled.fill(0)
oled.show()
oled.text("resending OTP.....",10,10)
oled.show()
sending_otp(receiver_email)
oled.text("OTP has been sent to "+valid_receiver_email,10,10)
oled.show()
oled.fill(0)
oled.show()
received_OTP = int(input(oled.text("enter OTP:",10,10)))
oled.show()
if received_OTP==OTP:
oled.fill(0)
oled.show()
oled.text("OTP verified",10,10)
oled.show()
else:
oled.fill(0)
oled.show()
oled.text("invalid OTP",10,10)
oled.show()
oled.fill(0)
oled.show()
answer = input(oled.text("enter yes to resend OTP on same email and no to enter a new email id:",10,10))
oled.show()
YES = ['YES','yes','Yes']
NO = ['NO','no','No']
if answer in YES:
sending_otp(valid_receiver_email)
elif answer in NO:
oled.fill(0)
oled.show()
new_receiver_email = input(oled.text("enter new email id:",10,10))
oled.show()
email_verification(new_receiver_email)
sending_otp(new_receiver_email)
else:
oled.fill(0)
oled.show()
oled.text("invalid input",10,10)
oled.show()
server.quit()