File size: 2,744 Bytes
f996a4d
 
de2d9d4
f996a4d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
de2d9d4
f996a4d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
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))