Install Fastapi
https://github.com/tiangolo/fastapi
pip install fastapi
C:\fastAPI\sendemail>pip install fastapi
C:\fastAPI\sendemail>pip install "uvicorn[standard]"
Install sqlalchemy jinja2
https://pypi.org/project/Jinja2/
C:\fastAPI\sendemail>pip install Jinja2
Create main.py
sendemail/main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #sendemail/main.py from fastapi import FastAPI, Request, Form from starlette.templating import Jinja2Templates from fastapi.staticfiles import StaticFiles import smtplib from email.message import EmailMessage templates = Jinja2Templates(directory = "templates" ) app = FastAPI() app.mount( "/static" ,StaticFiles(directory = "static" ,html = True ),name = "static" ) @app .get( "/" ) def home(request: Request): return templates.TemplateResponse( "index.html" , { "request" : request}) @app .post( "/submit" ) def submit(name : str = Form(),emailAddress: str = Form(),message: str = Form()): print (name) print (emailAddress) print (message) email_address = "cairocoders0711@gmail.com" # type Email email_password = "cairocodersednalan" # If you do not have a gmail apps password, create a new app with using generate password. Check your apps and passwords https://myaccount.google.com/apppasswords # create email msg = EmailMessage() msg[ 'Subject' ] = "Email subject" msg[ 'From' ] = email_address msg[ 'To' ] = "clydeymojica0130@gmail.com" # type Email msg.set_content( f """\ Name : {name} Email : {emailAddress} Message : {message} """ , ) # send email with smtplib.SMTP_SSL( 'smtp.gmail.com' , 465 ) as smtp: smtp.login(email_address, email_password) smtp.send_message(msg) return "email successfully sent" |
https://getbootstrap.com/docs/5.0/getting-started/introduction/
https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css
endemail/templates/index.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | //sendemail/templates/index.html {% extends "base.html" %} {% block title %}Home Page{% endblock %} {% block content %} <div class = "container py-4" ><p><h3>Python FastAPI How to Send Email using SMTP - smtplib</h3></p> <form id= "contactForm" action= "/submit" method= "post" > <div class = "mb-3" > <label class = "form-label" for = "name" >Name</label> <input class = "form-control" name= "name" id= "name" type= "text" placeholder= "Name" /> </div> <div class = "mb-3" > <label class = "form-label" for = "emailAddress" >Email Address</label> <input class = "form-control" name= "emailAddress" id= "emailAddress" type= "email" placeholder= "Email Address" /> </div> <div class = "mb-3" > <label class = "form-label" for = "message" >Message</label> <textarea class = "form-control" name= "message" id= "message" type= "text" placeholder= "Message" style= "height: 10rem;" ></textarea> </div> <div class = "d-grid" > <button class = "btn btn-primary btn-lg" type= "submit" >Submit</button> </div> </form> </div> {% endblock %} |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | //sendemail/templates/base.html <!DOCTYPE html> <html lang= "en" > <head> <meta charset= "UTF-8" /> <meta http-equiv= "X-UA-Compatible" content= "IE=edge" /> <meta name= "viewport" content= "width=device-width, initial-scale=1.0" /> <link rel= "stylesheet" type= "text/css" href= "{{ url_for('static', path='/styles.css')}}" /> <link href= "https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel= "stylesheet" /> <title>{% block title %} My Webpage {% endblock %}</title> </head> <body> {% block content %}{% endblock %} </body> </html> |
C:\fastAPI\sendmail>uvicorn main:app --reload
with uvicorn using the file_name:app_instance open the link on the browser http://127.0.0.1:8000/
http://127.0.0.1:8000/docs