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
#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"
Bootstrap 5 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
//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 %}
sendemail/templates/base.html
//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>
run the FastAPI app 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
