email-api / app.py.backup3
dahyedahye's picture
.
de2d9d4
# POSTMARK_API_KEY=db96eba8-a4b5-4b83-9377-2e7dcdc00d39
# SMTP_USER=kyowoon.lee1924@gmail.com
import os
import logging
import requests
from concurrent.futures import ThreadPoolExecutor
from fastapi import FastAPI, HTTPException, BackgroundTasks
from fastapi.responses import JSONResponse
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
# Set up logging configuration
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
app = FastAPI(
version="0.0.1",
servers=[
{
"url": "https://leekwoon-email-api.hf.space",
"description": "email API",
}
],
)
from postmarker.core import PostmarkClient
postmark = PostmarkClient(server_token=os.getenv("POSTMARK_API_KEY"))
executor = ThreadPoolExecutor(max_workers=3) # μ΅œλŒ€ 3개의 μŠ€λ ˆλ“œλ‘œ 비동기 μž‘μ—… 처리
def send_email_(to_email: str):
# postmark_api_key = os.getenv("POSTMARK_API_KEY")
from_email = os.getenv("SMTP_USER") # This should be your verified Postmark sender email
subject = "[kyobody - μžλ§‰μƒμ„±] μž‘μ—…μ΄ μ™„λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€."
body = "[kyobody - μžλ§‰μƒμ„±] μž‘μ—…μ΄ μ™„λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.SRT νŒŒμΌμ„ μ²¨λΆ€ν•˜μ—¬ μ „λ‹¬λ“œλ¦½λ‹ˆλ‹€."
postmark.emails.send(
From=os.getenv("SMTP_USER"),
To=to_email,
Subject=subject,
HtmlBody=body
)
# headers = {
# "Accept": "application/json",
# "X-Postmark-Server-Token": postmark_api_key,
# "Content-Type": "application/json",
# }
# data = {
# "From": from_email,
# "To": to_email,
# "Subject": subject,
# "TextBody": body,
# }
# try:
# print('hi')
# response = requests.post(
# "https://api.postmarkapp.com/email",
# headers=headers,
# json=data
# )
# response.raise_for_status() # Raises an HTTPError if the HTTP request returned an unsuccessful status code
# logging.debug(f"Email successfully sent to {to_email}, Response: {response.json()}")
# except requests.exceptions.RequestException as e:
# # Log any exceptions that occur during the email sending process
# logging.error(f"Failed to send email to {to_email}: {str(e)}")
# raise e
@app.post("/send-email")
def send_email(email: str, background_tasks: BackgroundTasks):
try:
# Schedule the email sending in the background
background_tasks.add_task(executor.submit, send_email_, email)
# Respond to the client immediately
return JSONResponse(status_code=202, content={"message": "You will receive an email when it's done."})
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))