Download app.py.backup2 from leekwoon/email-api: direct link, hf CLI and curl.
- Browser
- Download file 2.74 kB
-
https://huggingface.co/spaces/leekwoon/email-api/resolve/main/app.py.backup2
- Command line
-
hf download hf://spaces/leekwoon/email-api/app.py.backup2
-
curl -L -o app.py.backup2 https://huggingface.co/spaces/leekwoon/email-api/resolve/main/app.py.backup2
2.74 kB
| import os | |
| import re | |
| import μ€lib | |
| import logging | |
| from email.mime.text import MIMEText | |
| from email.mime.multipart import MIMEMultipart | |
| from concurrent.futures import ThreadPoolExecutor | |
| from fastapi import FastAPI, HTTPException, BackgroundTasks | |
| from fastapi.responses import JSONResponse | |
| from dotenv import load_dotenv | |
| # κ΅¬κΈ λλΌμ΄λΈ λ§ν¬, μ΄λ€ μΈμ΄, λ°μ μ΄λ©μΌ μ£Όμ | |
| # .env νμΌμμ μ€μν νκ²½ λ³μ λ‘λ | |
| 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", | |
| } | |
| ], | |
| ) | |
| executor = ThreadPoolExecutor(max_workers=3) # μ΅λ 3κ°μ μ€λ λλ‘ λΉλκΈ° μμ μ²λ¦¬ | |
| def send_email_(to_email: str): | |
| smtp_server = "smtp.gmail.com" | |
| smtp_port = 587 | |
| smtp_user = os.getenv("SMTP_USER") | |
| smtp_password = os.getenv("SMTP_PASSWORD") | |
| logging.debug(f"smtp_user: {smtp_user}") | |
| logging.debug(f"smtp_password: {smtp_password}") | |
| subject = "[kyobody - μλ§μμ±] μμ μ΄ μλ£λμμ΅λλ€." | |
| body = f"[kyobody - μλ§μμ±] μμ μ΄ μλ£λμμ΅λλ€.SRT νμΌμ 첨λΆνμ¬ μ λ¬λ립λλ€." | |
| try: | |
| msg = MIMEMultipart() | |
| msg["From"] = smtp_user | |
| msg["To"] = to_email | |
| msg["Subject"] = subject | |
| msg.attach(MIMEText(body, "plain")) | |
| logging.debug(f"debug 1") | |
| server = smtplib.SMTP('smtp.gmail.com', 3000) | |
| logging.debug(f"#") | |
| server.ehlo() | |
| logging.debug(f"#") | |
| # with smtplib.SMTP(smtp_server, smtp_port) as server: | |
| logging.debug(f"debug 2") | |
| server.starttls() | |
| logging.debug(f"debug 2") | |
| server.login(smtp_user, smtp_password) | |
| logging.debug(f"debug 3") | |
| server.sendmail(smtp_user, to_email, msg.as_string()) | |
| # Log success message | |
| logging.debug(f"Email successfully sent to {to_email}") | |
| except Exception 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 transcription and 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)) |