[python] 웹 서버에 이메일 발송 기능 추가하기

이번에는 Python을 사용하여 간단한 웹 서버에 이메일 발송 기능을 추가하는 방법에 대해 알아보겠습니다. 이메일 발송 기능은 사용자가 웹 페이지를 통해 양식을 작성하고 제출할 때, 서버에서 해당 이메일을 받아와 이메일로 전송하는 것을 의미합니다. 이 기능을 추가하여 웹 서버와 사용자 간에 실시간으로 이메일을 주고받을 수 있습니다.

필요한 패키지 설치

먼저, 이메일 발송 기능을 구현하기 위해 필요한 패키지를 설치해야 합니다. 파이썬에서는 smtplibemail 라이브러리를 사용하여 이메일을 발송할 수 있습니다. 아래의 명령어를 사용하여 패키지를 설치해주세요.

pip install smtplib
pip install email

이메일 발송 구현

  1. 패키지 import하기

    import smtplib
    from email.mime.text import MIMEText
    
  2. 함수 작성하기

    def send_email(sender, receiver, subject, message):
        # 이메일 보내기
        msg = MIMEText(message)
    
        msg['Subject'] = subject
        msg['From'] = sender
        msg['To'] = receiver
    
        try:
            smtp = smtplib.SMTP('smtp.gmail.com', 587)
            smtp.starttls()
            smtp.login(sender, 'password')
            smtp.sendmail(sender, receiver, msg.as_string())
            smtp.quit()
            return True
        except:
            return False
    

웹 서버와 연동하기

이제 이메일 발송 기능을 웹 서버와 연동해보겠습니다. Flask라는 웹 프레임워크를 사용하여 간단한 웹 애플리케이션을 만들어보도록 하겠습니다.

  1. Flask 설치하기

    pip install flask
    
  2. Flask 애플리케이션 생성하기

    from flask import Flask, render_template, request
    
    app = Flask(__name__)
    
  3. 이메일 발송 기능 추가하기

    @app.route('/send_email', methods=['POST'])
    def send_email_route():
        sender = request.form['sender']
        receiver = request.form['receiver']
        subject = request.form['subject']
        message = request.form['message']
    
        result = send_email(sender, receiver, subject, message)
    
        return render_template('result.html', result=result)
    
  4. 웹 페이지 구현하기

    <!DOCTYPE html>
    <html>
    <head>
        <title>Email Form</title>
    </head>
    <body>
        <form action="/send_email" method="POST">
            <input type="email" name="sender" placeholder="Sender Email" required><br>
            <input type="email" name="receiver" placeholder="Receiver Email" required><br>
            <input type="text" name="subject" placeholder="Subject" required><br>
            <textarea name="message" placeholder="Message" required></textarea><br>
            <input type="submit" value="Send Email">
        </form>
    </body>
    </html>
    
  5. 결과 페이지 구현하기

       
    <!DOCTYPE html>
    <html>
    <head>
        <title>Email Result</title>
    </head>
    <body>
        {% if result %}
            <h1>Email sent successfully!</h1>
        {% else %}
            <h1>Failed to send email.</h1>
        {% endif %}
    </body>
    </html>
       
    
  6. 애플리케이션 실행하기

    if __name__ == '__main__':
        app.run()
    

이제 웹 서버를 실행하고, 웹 브라우저로 접속하여 이메일을 발송해볼 수 있습니다. 사용자가 입력한 이메일 정보가 서버로 전송되고, 서버에서 해당 이메일을 받아와 이메일로 전송합니다. 전송 결과에 대한 화면을 보여주어 사용자에게 알립니다.

이처럼 Python을 사용하여 웹 서버에 이메일 발송 기능을 추가할 수 있습니다. 이를 응용하여 다양한 기능을 구현할 수 있으며, 파이썬과 Flask 웹 프레임워크의 다양한 기능을 활용하여 웹 애플리케이션을 개발할 수 있습니다.

참고 자료