1+ from flask import Flask , request
2+ import smtplib
3+ from email .mime .text import MIMEText
4+ from email .mime .multipart import MIMEMultipart
5+ from email .mime .base import MIMEBase
6+ from email import encoders
7+
8+ app = Flask (__name__ )
9+
10+ @app .route ("/" , methods = ["GET" , "POST" ])
11+ def index ():
12+ if request .method == "POST" :
13+ name = request .form .get ("name" )
14+ phone = request .form .get ("phone" )
15+ email = request .form .get ("email" )
16+ memo = request .form .get ("memo" )
17+ file1 = request .files .get ("file1" )
18+ file2 = request .files .get ("file2" )
19+
20+ msg = MIMEMultipart ()
21+ msg ['From' ] = "id@naver.com"
22+ msg ['To' ] = "id@naver.com"
23+ msg ['Subject' ] = "Formmail"
24+
25+ body = f"Name: { name } \n Phone: { phone } \n Email: { email } \n Memo: { memo } "
26+ msg .attach (MIMEText (body , 'plain' ))
27+
28+ if file1 :
29+ filename = file1 .filename
30+ attachment = MIMEBase ('application' , "octet-stream" )
31+ attachment .set_payload ((file1 .read ()))
32+ encoders .encode_base64 (attachment )
33+ attachment .add_header ('Content-Disposition' , f'attachment; filename= { filename } ' )
34+ msg .attach (attachment )
35+
36+ if file2 :
37+ filename = file2 .filename
38+ attachment = MIMEBase ('application' , "octet-stream" )
39+ attachment .set_payload ((file2 .read ()))
40+ encoders .encode_base64 (attachment )
41+ attachment .add_header ('Content-Disposition' , f'attachment; filename= { filename } ' )
42+ msg .attach (attachment )
43+
44+ server = smtplib .SMTP ('smtp.naver.com' , 587 )
45+ server .ehlo ()
46+ server .starttls ()
47+ server .ehlo ()
48+ server .login ("id@naver.com" , "password" )
49+ text = msg .as_string ()
50+ server .sendmail ("id@naver.com" , "id@naver.com" , text )
51+ server .quit ()
52+
53+ return "Form submitted!"
54+
55+ return """
56+ <html>
57+ <head>
58+ <title>Formmail</title>
59+ </head>
60+ <body>
61+ <h1>Formmail</h1>
62+ <form method="post" enctype="multipart/form-data">
63+ <p>
64+ <label for="name">Name:</label>
65+ <input type="text" id="name" name="name">
66+ </p>
67+ <p>
68+ <label for="phone">Phone:</label>
69+ <input type="text" id="phone" name="phone">
70+ </p>
71+ <p>
72+ <label for="email">Email:</label>
73+ <input type="text" id="email" name="email">
74+ </p>
75+ <p>
76+ <label for="memo">Memo:</label>
77+ <textarea id="memo" name="memo"></textarea>
78+ </p>
79+ <p>
80+ <label for="file1">File 1:</label>
81+ <input type="file" id="file1" name="file1">
82+ </p>
83+ <p>
84+ <label for="file2">File 2:</label>
85+ <input type="file" id="file2" name="file2">
86+ </p>
87+ <p>
88+ <input type="submit" value="Submit">
89+ </p>
90+ </form>
91+ </body>
92+ </html>
93+ """
94+
95+ if __name__ == "__main__" :
96+ app .run ()
0 commit comments